码迷,mamicode.com
首页 > 数据库 > 详细

MySQL优化

时间:2019-10-04 11:20:51      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:缓冲区   中国   for   数据库   png   info   主键   传递依赖   结构   

A数据库可以优化层面

1数据库结构的优化(硬件升级,读写分离,分表技术,,添加缓存数据库)

2表结构的优化(3范式设计,反三范式的设计,使用合适的存储引擎)

3语句的优化(使用存储过程和触发器,合理使用索引)

B优化的思路:

技术图片

 

 技术图片

 

 如果是周期性波动,则需要调整缓存的缓存清除策略,防止内存穿透,击穿和雪崩

如果不是周期性的问题,则需要通过processlist去分析是语句等待的时间问题还是语句的执行问题

语句的等待时间问题,则需调整数据库服务器的缓冲区和线程数

如果是语句问题,可以使用show profile for query,和explain去分析语句的具体执行细节。

数据库结构的优化:

。。。。。。。。。。。。。。。

2表结构的优化

 

表的设计,首先需要按照三范式去设计

  1. 确保每列的原子性(约束表的所有字段)(规范话所有字段,都不可再分如(中国广东,必须要分开))
  2. 非键字段必须依赖于键字段(一个表只描述一件事(如老师表,不存放学生表的信息))(主键时表的关键字段,非主键是具体描述这个表的信息)
  3. 消除传递依赖(非主键字段中,如果一个字段可以推导出另外一个字段,这叫传递依赖)

在次基础上,为了提高查询效率,可以适当增加表冗余,以减低表查询时,在关联表的时候,耗费的时间(具体需要结合业务场景)

存储引擎的选择:

innodb

mymisan

Myisam不支持事务,查询效率高,碎片化多(使用了)

 

Myisam的次索引和主索引 都指向物理行(根据数的节点信息,使用指针到物理地址找出信息)

技术图片

 

 

 

 

Innodb.支持视物,数据的修改优

 

innodb的次索引指向对主键的引用(主索引的叶子节点已存在具体的行信息)

 

3语句的优化

存储过程和触发器。是已经在数据库服务器编译好的语句,直接执行返回结果即可,节省了传输语句和编译语句耗费的时间

技术图片

 

 

建立索引。

 

MySQL优化

标签:缓冲区   中国   for   数据库   png   info   主键   传递依赖   结构   

原文地址:https://www.cnblogs.com/zj-xu/p/11621506.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!