登录建立连接
- 登录维持session
- 建立连接,权限缓存
- 权限缓存在链接里。不用每次查询都校验。效率高。
查看链接数:
1 | show processlist; |
my.conf
query_cache_type
一般不用。
查看缓存命中情况。
1 | show status like '%Qcache%'' |
为什么这种缓存是鸡肋?
缓存的时候会经常刷新,不适用热点业务。
词法分析器
sql语句拆分成语法树。
语法树:结构化的存储。
语法树拆分后的使用场景:
在分布式事务中 二阶段提交。
commit,rollback
- 通过语法树会记录反向操作。在回滚的时候直接rollback。
- 补偿机制。构建补偿sql。进行回滚重放。
优化器
条件查询,会判断哪种效率高用哪种,或者判断用哪种索引或者不用索引。
执行器
调用响应的引擎执行操作。
bin-log归档
不小心删了库怎么找回来?
server层实现的 bin-log技术。
bin-log记录的逻辑语句的影响。
bin-log格式有三种statement,row,mixed
1 | binlog-format=ROW |
statement:记录的是这条操作语句的逻辑, 产生结果的过程。
row: 记录这个语句影响那条记录之后的结果。
row: mixed两种都记录。
如果记录的是statement
1 | update * from xxx where h=xx or b=xxx |
优化器走的索引不一致,可能产生主从不一致。
所以最好bin-log用row
bin-log恢复
1 | flush logs; |
重新开个bin-log文件进行记录。
恢复
1 | mysqlbinlog --no-defaults /**/*/mysql-bin.00001 | mysql -uroot -p xxx |
参数:
1 | --start-position |