mysql优化的几点建议

1、硬件配置优化
(1)CPU选择:多核的CPU,主频高的CPU
(2)内存:更大的内存
(3)磁盘选择:更快的转速、RAID、阵列卡
(4)网络环境
2、mysql设计优化
(1)存储引擎的选择
①Myisam:数据库并发不大,读多写少,而且都能很好的用到索引,sql语句比较简单
②Innodb:并发访问大,写操作比较多,有外键,事务等需求
(2)命名规则
①多数开发语言命名规则:MyAdress
②多数开源思想命名规则:my_address
③避免随便命名
(3)字段类型选择
①根据绣球选择合适的字段类型,在满足需求的情况下字段类型尽可能小
②只分配满足需求的最小字符数
varchar和char的选择
1、如果列数据的大小一致或者相差不大使用char
2、如果列数据项的差异相当大使用varchar
3、对于MyISAM表,尽量使用Char
4、对于Innodb表,因为它的数据行内部存储格式对固定长度的数据行和可变长度的不加区分,所以使用char不见得会比使用varchar好
5、表中只要存在一个varchar类型的字段,那么所有的char字段都会自动编程varchar类型,因此建议定长和变长的数据分开
(4)主键选择
①能唯一的表示行
②显式的定义一个数值类型自增字段的主键
③主键应该是单列的
④主键字段类型尽可能小
⑤尽量保证不对主键字段进行更新修改
⑥主键不包含动态变化的数据
⑦主键由计算机自动生成
3、添加索引的原则
(1)选择唯一性索引
(2)为经常需要排序、分组和联合操作的字段建立索引
(3)为常作为查询条件的字段建立索引
(4)限制索引的数据,索引不是越多越好
(5)尽量使用数据量少的索引,对于大字段可以考虑前缀索引
(6)删除不再使用或者使用很少的索引
(7)结合核心SQL优先考虑覆盖索引
(8)禁用字符串做主键
4、Mysql软件优化
(1)开启mysql复制,实现读写分离、负载均衡,将读的负载分摊到多个从服务器上
(2)使用推荐的GA版本,提升性能
(3)利用分区新功能进行大数据的数据拆分
5、Mysql语句级优化
(1)不要在数据库中做运算
(2)避免负向查询和%前缀模糊查询
(3)不在索引列做运算或者使用函数
(4)不要再生产环境中使用select * from,只查询使用的列
(5)查询尽可能使用limit减少返回的行数
(6)避免隐式类型转换
(7)联表查询的时候,把小结果集放在前面
6、索引使用原则
(1)全值匹配
(2)最左前缀
(3)不再索引列上做任何操作
(4)存储引擎不能使用索引中返回条件右边的列
(5)尽量使用覆盖索引,减少select *
(6)mysql在使用不等于的时候无法使用索引
(7)is null ,is not null无法使用索引
(8)like以通配符%开头无法使用索引
(9)字符串不加单引号索引失效
(10)少用or

猜你喜欢

转载自blog.csdn.net/m0_37343985/article/details/83754156