mysql知识点汇总
1. 数据库的安装
2. 数据库设计需要注意什么
3. SQL语句优化
4. 怎样处理慢查询?
7. 数据库锁有哪些?
8. 如何保证数据库高可用?
9. 如何保证数据库高并发?
10. 什么样的数据库缓存方案最合理?
11. innodb和myisam对比
12. 有哪些好用的数据库中间件?
13. 数据库日志介绍
14. 数据库主从复制
mysql 数据主从的实现方式:RBR,SBR,MBR
mysql复制主要有三种方式:基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复制(mixed-based replication, MBR)。对应的,binlog的格式也有三种:STATEMENT,ROW,MIXED。
Multiversion concurrency control 多版本并发控制
并发访问(读或者写)数据库时,对正在事务内处理的数据做多版本的管理,用来避免由于写操作的堵塞,而引发读操作失败的并发问题。
行锁防止别的事务修改或删除,GAP锁防止别的事务新增,行锁和GAP锁结合形成的的Next-Key锁共同解决了RR级别在写数据时的幻读问题。
很多人容易搞混不可重复读和幻读,确实这两者有些相似。但不可重复读重点在于update和delete,而幻读的重点在于insert。
MySQL的RR级别中,是解决了幻读的读问题的。为了解决当前读中的幻读问题,MySQL事务使用了Next-Key锁。Next-Key锁是行锁和GAP(间隙锁)的合并。
2. 索引:
B+Tree
1)一个节点存储多个数据,这样的好处,是可以充分利用预读功能。
2)节点上是不存储数据的(这里是指不存储指向数据真实地址的指针或主键地址),所有的数据都在叶子节点上。并且每个叶子节点有一个指向下一个叶子节点的指针,这样可以方便遍历。
索引分类:
B-Tree索引:
哈希索引(hash index):哈希索引基于哈希表实现,只有精确匹配索引所有列的查询才有效。结构十分紧凑,查询速度非常快。
空间数据索引:
全文索引:
innodb索引分类:
聚簇索引(clustered index):1) 有主键时,根据主键创建聚簇索引; 2) 没有主键时,会用一个唯一且不为空的索引列做为主键,成为此表的聚簇索引; 3) 如果以上两个都不满足那innodb自己创建一个虚拟的聚集索引
辅助索引:在聚簇索引之上创建的索引称之为辅助索引,辅助索引访问数据总是需要二次查找。辅助索引叶子节点存储的不再是行的物理位置,而是主键值。
复合索引:由多列创建的索引称为符合索引,在符合索引中的前导列必须出现在where条件中,索引才会被使用
前缀索引:当索引的字符串列很大时,创建的索引也就变得很大,为了减小索引体积,提高索引的扫描速度,就用索引的前部分字串索引,这样索引占用的空间就会大大减少,并且索引的选择性也不会降低很多。而且是对
BLOB和TEXT列进行索引,或者非常长的VARCHAR列,就必须使用前缀索引,因为MySQL不允许索引它们的全部长度。
参见:https://blog.csdn.net/bigtree_3721/article/details/51335479