建立索引帮助
help CREATE INDEXcss
建立索引html
CREATE UNIQUE INDEX
,惟一键命名时最好加上前缀以区分例如uni_idx删除索引mysql
查看索引web
优化表空间:
数据库中表数据文件,在删除数据后,所占空间不会自动释放,须要进行表空间优化才能够释放sql
查看索引的使用shell
EXPLAIN分析索引的有效性数据库
profiling
,默认是关闭的保证多个用户同时访问,互相不干扰vim
锁分类centos
实现缓存
锁策略
在锁粒度及数据安全性寻求的平衡机制,加锁的缺点为影响并发性,可是能够保证数据完整性,在二者之间寻求平衡
WRITE
锁时,须要注意缓存是否开启,若是有缓存须要重启服务或者关闭缓存开关或者将缓存相关的服务器变量quer_cache_wlock_invalidate=on
写入配置文件,不容许其余用户从缓存读取事务Transactions:一组原子性的SQL语句,或一个独立工做单元,有专门的事务日志记录操做过程,实现undo,redo等故障恢复功能,来保证数据的一致性
ACID特性:
Transaction生命周期
使用事务
在数据库中执行增删改就是一个事务,回车执行就结束了此事务,这种系统后台自动开始,自动提交的事务叫作隐式提交事务,mysql和sql server默认使用自动提交,oracle默认使用的是手动提交须要输入(commit提交,rollback回滚)
自动提交是否启动相关变量
set autocommit={1|0} 默认为1,设为0时为非自动提交
人为定义启动事务(如下3个命令均可以)
结束事务:
事务保存点
事务隔离级别
事务隔离级别 | 脏读可能性 | 不可重复读可能性 | 幻读可能性 | 加锁读 |
---|---|---|---|---|
读未提交(read-uncommitted) | 是 | 是 | 是 | 否 |
不可重复读(read-committed) | 否 | 是 | 是 | 否 |
可重复读(repeatable-read) | 否 | 否 | 是 | 否 |
串行化(serializable) | 否 | 否 | 否 | 是 |
各级别说明,从上至下更加严格
innodb_lock_wait_timeout
wait_timeout
指定事务隔离级别:
服务器变量tx_isolation指定,默认为REPEATABLE-READ,可在GLOBAL和SESSION级进行设置
没有特殊需求,劲量少的启用非默认设置,多少都会拖慢速度
保存事务在执行中的操做,事务型存储引擎自行管理和使用
特征
事务日志文件
Innodb事务日志相关配置:
主从复制架构中,从服务器用于保存从主服务器的二进制日志中读取的事件
general_log=ON|OFF
general_log_file=HOSTNAME.log
log_output=TABLE|FILE|NONE
slow_query_log=ON|OFF
long_query_time=N
slow_query_log_file=HOSTNAME-slow.log
log_queries_not_using_indexes=ON
log_slow_rate_limit = 1
log_slow_queries = OFF
功能
记录致使数据改变或潜在致使数据改变的SQL语句,经过“重放”日志文件中的事件来生成数据副本,也就是将二进制文件中的SQL语句从新执行一次,未来能够用二进制日志来实现主从复制
-特征
优化建议
建议二进制日志和数据文件分开存放,不至于一块儿丢失,有还原机会
二进制日志记录格式
UPDATE students SET age=10;
没有限定条件,实际修改的是所有记录好比25条,记录模式为语句记录,将只记录此条SQL语句查看默认二进制记录格式
show variables like 'binlog_format';
二进制日志文件的构成
二进制日志相关的服务器变量:
sql_log_bin=ON|OFF
log_bin=/PATH/BIN_LOG_FILE
binlog_format=STATEMENT|ROW|MIXED
max_binlog_size=1073741824
sync_binlog=1|0
expire_logs_days=N
二进制日志管理
SHOW {BINARY | MASTER} LOGS
SHOW MASTER STATUS
查看二进制文件中的指定内容
二进制日志事件的格式:
清除指定二进制日志:
PURGE { BINARY | MASTER } LOGS { TO 'log_name' | BEFORE datetime_expr }
删除全部二进制日志,index文件从新记数
日志文件从#开始记数,默认从1开始,通常是master第一次启动时执行,MariaDB10.1.6开始支持TO #
RESET MASTER [TO #]
切换日志文件,生成的日志和原日志文件都是有效的
FLUSH LOGS
命令格式
mysqlbinlog [OPTIONS] log_file…
OPTIONS
示例
利用二进制文件恢复数据
</div> <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-7f770a53f2.css" rel="stylesheet"> </div>