数据库优化方案整理
Posted 悦码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库优化方案整理相关的知识,希望对你有一定的参考价值。
数据库设计优化
1.使用varchar(变长)而非char。
2.使用tinyint、smallint、mediumint而非int,非负加unsigned。
3.尽量使用数字型字段,不要把数字型设计为字符型。
4.合理使用索引:单列索引(普通索引index–>唯一索引unique index–>主键索引primary key)、组合索引(最左匹配)、全文索引(MyISAM引擎 char、varcahr、text)、空间索引(空间数据类型)。索引提高了select效率,降低了insert和update效率(<=6)。
5.分表:(垂直)字段较多的表,有些字段使用频率较低,分离出新表;(水平)数据量大的按时间、区间分表。
6.大量连接查询的表创建临时表,减少查询时的连接耗时。
7.适当增加冗余字段,减少连接查询(单表>>多表)。
sql语句优化(括号中为替代方案或注释)
1.避免跳过索引而进行全表扫描:避免where中null值判断(使用默认值0)、!=、<>、or(两边字段都为索引或使用union)、in(exists)、not in(between)、对字段进行表达式操作、对字段进行函数操作、like ‘%xxx’(like ‘xxx%‘)。
2.禁止使用 ‘*’
3.使用join替代子查询,避免频繁创建和删除临时表。
4.用where替代having。
5.order by只有在order by中所有的列都包含在索引中以及所有的列都为非空才会使用索引。
6.先过滤数据再进行group by。
7.分析表、检查表、优化表:
a. 分析表主要是分析表中关键字的分布
analyze table user;
b. 检查表主要是检查表中是否存在错误
Check table user;
c. 优化表主要是消除删除或更新造成的表空间浪费
Optimize table user;执行中加只读锁。
硬优化
1.cpu、内存、磁盘。
2.优化数据库参数:
key_buffer_size:索引缓冲区大小;
table_cache:能同时打开表的个数;
query_cache_size和query_cache_type:前者是查询缓冲区大小,后者是前面 参数的开关,0表示不使用缓冲区,1表示使用缓冲区,但可以在查询中使用 SQL_NO_CACHE表示不要使用缓冲区,2表示在查询中明确指出使用缓冲区才用 缓冲区,即SQL_CACHE。
sort_buffer_size:排序缓冲区。
3.分库分表、读写分离:主库写 从库读。
4.缓存:本地缓存、缓存服务(redis)。
编辑整理 丨熊玉锦
以上是关于数据库优化方案整理的主要内容,如果未能解决你的问题,请参考以下文章
[数据库优化]数据库SQL优化大总结之 百万级数据库优化方案