【SQL性能优化】【数据库调优】【概览】

数据库调优目标

简单的目的:运行更快,响应更快,吞吐量更大

不过目标太泛,不够具体,所以我们需要根据精细的问题定位去调优。通常是以下几种:

  • 用户反馈
    根据用户的问题反馈,找到和数据相关的问题
  • 日志分析
    查看数据库日志和操作系统日志找到异常情况
  • 服务器资源监控
    监控server的CPU、内存、I/O等情况,实时了解服务器性能使用
  • 数据库内部状况监控
    活动会话(active session)监控是其中一个重要指标。了解数据库当前处于的状态、是否有sql堆积等。还有监控事务、锁等待…

调优的方向选择

数据库调优不仅有SQL,部署、配置、架构也很重要

1. 选择合适DBMS
对事务性能和安全要求比较高,选择商业数据库如sqlserver,MySQL有很多存储引擎,InnoDB善于事务处理,MyISAM反之。NoSQL中有使用不同场景的数据库,列式存储降低系统I/O,可用在分布式文件系统和OLAP,但数据频繁增删改就不适用了。
2. 优化表设计
表结构尽量遵循第三范式原则,查询比较多可以用反范式,表字段的数据类型选择
3. 优化逻辑查询
改变SQL语句内容让执行效率更高效。SQL 的查询重写包括了子查询优化、等价谓词重写、视图重写、条件简化、连接消除和嵌套连接消除等。
4.优化物理查询 (索引优化)
将逻辑查询的内容变成可以被执行的物理操作符。核心是建立高效索引。考虑建立索引的各种问题,并且通过计算找到最优访问路径,寻找代价最小的执行计划
5. 使用redis和memcached作为缓存
请求外援提升查询效率,将常用数据直接放到内存中,提升效率。键值存储数据库可以把数据存到内存中,redis支持持久化且支持的数据结构多,memcached不支持,看实际情况使用
6. 库级优化
从数据库维度进行优化策略,例如控制表的数量,采用主从架构优化我们的读写策略。对数据库分库分表,减少单一数据库服务器的访问压力,MySQL自带分区表功能,垂直切分和水平切分,采用垂直分表的形式,就是将一张数据表分拆成多张表,采用水平拆分的方式,就是将单张数据量大的表按照某个属性维度分成不同的小表。

总结

选择好DBMS和数据表的设计方式,SQL查询优化,实在不行,找外援
引入一句不错的话:先选择好的装备,再选择好的作战路线,必要时请外援

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值