数据库优化方案整理

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优化大总结1之- 百万级数据库优化方案

[数据库优化]数据库SQL优化大总结之 百万级数据库优化方案

数据库SQL优化大总结之 百万级数据库优化方案

SQL数据库数据优化SQL优化总结( 百万级数据库优化方案)

数据库SQL优化大总结之 百万级数据库优化方案

数据库SQL优化大总结之 百万级数据库优化方案