数据库优化概览

  数据库优化,一直是很让人头疼的事,尤其对于当前互联网发展到了一定的时期,数据量达到了一定的数量级,处理数据比较慢,这方面的知识就显得尤为重要了。这里就大概来说下数据库优化的相关知识。

  先说下当前数据库大部分都还是以关系型数据库为主流,但是现在NoSQL也慢慢变得越来越重要了,毕竟现在是大数据时代,但是这里主要是讲关系型数据库。

  数据优化是①找出系统瓶颈;②合理结构设计和参数调整,提高响应速度;③节省系统资源。其原则是①减少系统瓶颈;②减少资源占用;③增加系统反应速度。一般包括优化查询和优化数据库结构。

  数据库优化包括逻辑优化和服务器优化。逻辑优化包括优化查询和优化数据库结构;服务器优化包括硬件优化和参数优化。

  优化查询主要是建立索引,但是在使用索引的时候,要注意一下几点:①where查询条件中,如果使用Like的话,等候右边不能以%开始,否则该查询中索引是不起作用的。②多列索引的话,则要使用第一个索引字段,否则也不起效。③Or条件的话,Or左边和右边的条件字段都必须是索引字段,否则也不起作用。另外尽量使用连接查询代替子查询,因为子查询会导致数据库系统建立临时表,等查询结束后又要删掉临时表,这期间的操作会造成不小的性能消耗,而连接查询就不会产生临时表。

  优化数据结构包括①数据库纵向切割(根据字段的使用频率来切割成两个表);②横向切割;③联合查询比较多的话,则可以为该查询添加一个中间表;④增加冗余字段,减少连接表造成的性能消耗;⑤优化插入记录(禁用索引、禁用唯一性、批量插入(比如insert,一次性而不是用多条insert)、批量插入尽量使用Load Data Infile);⑥分析表,检查表,优化表,为的是检查出表是否有错误。

  以下拿Mysql来说下平时一般是如何来进行简单数据库优化的。Mysql提供了查询分析的关键字,Explain来对查询语句进行分析,找出其中查询慢的地方和原因,分析的结果一般如下图(摘自:http://blog.csdn.net/zhuxineli/article/details/14455029):

  

该分析结果表的详细讲解请看:http://blog.csdn.net/zhuxineli/article/details/14455029。另外,如果是代码里面使用高级语言的持久层框架的话,想要检测究竟做了什么操作的话,可以通过查看Mysql的通用查询日志文件就可以知道了。Mysql的日志文件分为好几种,有错误日志,二进制日志,通用查询日志,慢查询日志,但是这几种日志默认都是关闭的,要打开才会记录,但是最好不要都打开,因为打开的话,会很好性能,在需要的时候打开记录一下就好了,详细如何打开自己研究了。

 

posted @ 2016-06-10 22:59  ismallboy  阅读(854)  评论(0编辑  收藏  举报