PART1 :mySql架构
SQL执行过程:
(*先查询缓存 如有查询结果则直接返回。8.0版本后取消)
mysql从InnoDB开始支持事务,因为它有事务相关的日志系统 redo log(重做日志) 及 undo log(撤销日志)。 redo log用来保证数据持久性,可以用来做数据恢复; undo log用于支持事务的原子性和多版本并发控制(MVCC)。
mysql连接模式为长连接 一般为8小时 8小时无操作断开:Lost connection to MySQL server during query.
数据误删需要恢复时: 首先找到最近的一次全量备份,从这个备份恢复到临时库;然后,从备份的时间点开始,将备份的binlog依次取出来,重放到误删表的那个时刻。
PART2:索引
索引是帮助mySql高效获取数据的排好序的数据结构(二叉树 红黑树 Hash表 B-Tree)。
InnoDB表(支持事务,行级锁,外键,mvcc,有利于高并发场景应用.可靠性高,数据库崩溃后可通过redolog恢复)必须建主键,且必须整型自增。
B+Tree索引: 非叶子节点不存储data,只存储索引(冗余),可以放更多的索引,叶子节点包含所有的索引字段,用指针连接,提高区间访问的性能。
Hash索引: 对索引的key进行一次hash计算就可以定位出数据存储的位置。很多时候hash索引比b+索引效率高,但Hash仅能满足 = ,in 不支持范围搜索, 且有hash冲突问题
索引最左前缀原理: 使用索引需要按照索引字段顺序用