mysql知识点汇总

1. 数据库的安装

2. 数据库设计需要注意什么

3. SQL语句优化

4. 怎样处理慢查询?

5. 怎样更好的利用数据库索引?

6. 事务隔离级别有哪些?怎么实现的?

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       

 

 

 

    作者:田木木
         
    本博客中未标明转载的文章归作者田木木和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted @ 2018-05-04 15:44  Jtianlin  阅读(889)  评论(0编辑  收藏  举报