重庆中心浅谈数据库优化

Posted 黑马程序员重庆中心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重庆中心浅谈数据库优化相关的知识,希望对你有一定的参考价值。

数据库的优化

相信大家在面试的时候经常被问到关于数据库的优化问题,相信大家也很困扰,一般都是少用like,子查询之类的回答。

今天就简单告诉大家我自己总结的数据库优化相关的知识:

首先数据库优化主要分为硬优化和软优化:

硬优化主要是指针对数据库本身的优化(表和库)

软优化主要就是针对sql语句之类的优化


一、软优化(主要是sql语句优化):

1、查询条件尽量加索引

 a)这个不是必须加的,但是在很大程度上能够解决一定查询效率的问题。但是需要注意的是不要在索引字段上做计算,用函数等操作。

 2、少部分关键字的使用需要减少

a)避免在复杂的查询里面有like ‘%参数%’这样的形式,即少用到模糊查询,模糊查询完全可以在页面做成下拉框做选择。

b)NOT IN 这类也是非常浪费性能的,但是有的时候不可避免的会用到,只能建议少用,如果一定要用到可以用exit  not exit代替

c) *  这个禁止使用,虽然有的时候开发是很方便,但是效率极低,建议使用字段名来代替

 d)其他的情况,例如id>2 和id>=3,在整数的情况下,这两个查询结果是一样的,但是效率肯定后者就大于前者了。 >2需要去查询=2的情况,而>=3就不需要

3、 减少子查询的使用

a) 只有在业务复杂的时候我们会采用子查询,但是在复杂的业务都可以简单化,所以子查询我们完全可以拆分出来,先生成临时表,在做关联查询,这样就相对简单了

4、其他

a) 减少对数据库的重复操作,能合并就合并。能一条sql语句解决就不要分多条

b) 告诫大家一句,不要删除测试小姐姐的数据,不然就只能一辈子单身了

c) 还有很多没写到的,希望大家自己慢慢总结。Sql语句的优化不是固定的,只要在特定的业务下能提高效率那么就是ok的。

以上只是简单的列举了一部分。


二、硬优化

1、 拆表

a) 在很多的情况下,某一张表某些个字段经常性的被查询到,那么我们就有必要来拆分一下表了

正如上面这张图片,在id,name,attr7,attr8,attr9常用的情况下,我们完全可以把这个表拆分成两张表通过id关联起来

2、分表

a) 单表数据太多,查询的效率极慢的情况下我们可以把表里的数据分成几张表来存储【重庆中心】浅谈数据库优化

就如上图,我们每次查询一月份的数据的时候都要在全年度的表里去查询,数据量太大,查询会很慢。

所以我们将每个月份的数据单独提出来做成表,这样查询就相对比较快了

3、读写分离

a) 读写分离,主要针对数据库访问的量很大,导致数据库运行可能宕机的问题。原理是添加几个数据库,形成集群将访问量平均分配到每个数据库上

如上图,我们只需要修改主库数据,通知到每个分库,从库更新之后。每次查询我们都将查询分配到每个从库就ok了。

4、数据库的优化还有针对引擎的优化,但是臣妾做不到啊。


最后,今天只是讲解了关于数据库优化的理论知识,后面有时间呢,会慢慢的更新如何搭建数据库集群,敬请关注。

重庆黑马程序员
随时分享IT资讯,长按二维码给你更多惊喜~

以上是关于重庆中心浅谈数据库优化的主要内容,如果未能解决你的问题,请参考以下文章

浅谈程序优化

浅谈单机数据库优化的一些实践

MySQL 优化设计规则浅谈

浅谈数据库查询优化的几种思路

浅谈MySQL数据库优化

浅谈MySQL数据库优化