数据库优化从哪些方面考虑

在使用数据库时,当数据的访问量过大的时候,就要对数据库进行优化。一般可以在以下几个方面进行考虑。(以mysql为例)

1.首先选择合适的DBMS,根据业务情况选择合适的数据库,例如mysql,sql server, Oracel等

2.建表的时候优化,使用合适的数据类型,尽量使用占用内存空间小的,对字段都加NOT NULL约束,对表添加冗余字段,反范式化等

3.SQL语句优化,对查询的SQL语句进行优化,尽量使用索引,避免索引失效。尽量别使用子查询(会建立并销毁临时表,消耗资源),别使用join语句(当数据量大的时候导致性能问题)。查询数据尽量别用select *,尽量使用带范围的查询.

4.索引优化,对经常连在一起查询的字段使用联合索引,经常查询的字段使用索引等等,索引建立的数量也不宜过多,因为mysql维护索引需要花费一定的代价,在时间 上和空间上都会有代价

5.使用Redis或Memory等中间件作为缓存。因为myslq中自带的缓存buffer_pool的容量大小有一定的限制。可以将经常使用到的数据放在中间件缓存中,等用户下次查询相同数据不用再访问数据库,直接访问中间件中的数据就可,减少了IO操作,查询数据效率大大提升。

6.搭建集群,搭建mysql集群,设置一主多从或者多主多从。读写分离读数据和写数据不在同一个mysql服务器上面,降低了单个mysql服务器的压力

7.分库分表,当表的数据量过大的时候可以考虑分库分表。根据业务将数据库做一个拆分。分表时可以根据属性(如时间、类型等)对表进行水平拆分,或者根据冷热数据对表进行垂直拆分

当然,以上对数据库的优化也不一定都是对的,具体的实现还是要根据具体的业务来决定。优化的方式都是有利也有弊。比如添加索引,数据的查询效率是变高了,但是维护索引的成本也增加了,使用redis作为缓存,能降低mysql服务器的压力,但是会产生数据一致性的问题。搭建集群需要成本,分库分表可能会产生冗余,分布式问题等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值