分类 mysql 中的文章

mysql|知识大纲

总结一下mysql的知识大纲,利用思维导图的方式将零散的知识组合起来,形成网状图谱,方便回想和记忆。

……

阅读全文

mysql|分库分表

为什么需要分?

关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。

……

阅读全文

mysql|使用注意

设计

  1. 设计的合理性,能否容忍冗余字段,尽量一张表,方便开发
  2. 考虑使用记录表,记录一些查询和修改的记录信息
  3. 考虑业务的使用情况,设置相关索引,加速查询和修改
  4. 分库分表的合理性
  5. 存储量的预估
  6. 业务访问量的预估,是否会造成db的压力

使用

  1. 使用时间戳存储时间
  2. 使用datetime等时间格式,注意时区问题,注意设置数据库的时区
  3. 字符集问题注意
  4. 根据业务的qps和服务器的性能,合理设置连接池大小和链接时间、读取写入时间、超时时间
  5. 修改和删除数据时一定要加where语句
  6. 修改和删除时一定要先使用limit测试
……

阅读全文

mysql|explain

explain

explain显示了mysql如何使用索引来处理select语句以及连接表,可以帮助选择更好的索引和写出更优化的查询语句。

……

阅读全文

mysql|join

join流程分类

Index Nested-Loop Join

分析语句select * from t1 straight_join t2 on (t1.a=t2.a);

……

阅读全文

mysql|全表扫描问题

全表扫描流程

InnoDB 的数据是保存在主键索引上的,所以全表扫描实际上是直接扫描表 t 的主键索引。这条查询语句由于没有其他的判断条件,所以查到的每一行都可以直接放到结果集里面,然后返回给客户端。

……

阅读全文

mysql|删除流程

数据删除

删除整个表的时候,可以使用 drop table 命令回收表空间。但是,我们遇到的更多的删除数据的场景是删除某些行,这时就遇到了这样的问题:表中的数据被删除了,但是表空间却没有被回收。

……

阅读全文