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       

 

 

 

    作者:田木木
         
    本博客中未标明转载的文章归作者田木木和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

相关文章:

  • 2021-07-27
  • 2021-08-25
  • 2022-12-23
  • 2021-12-19
  • 2021-05-15
  • 2021-05-01
  • 2021-05-31
猜你喜欢
  • 2021-08-11
  • 2021-12-15
  • 2021-10-04
  • 2021-06-22
  • 2021-07-23
  • 2021-02-03
相关资源
相似解决方案