1 前言
在生产环境中,经常出现数据库使用者抱怨应用响应缓慢,数据库操作卡顿且SQL执行时间过长的问题。性能优化是一个庞大的体系,涵盖了硬件、网络、操作系统、数据库以及应用程序的多个方面。鉴于我的有限经验,我分享一些数据库性能优化的思路,但可能存在一些错误和不足之处,欢迎多加指教。
2 性能优化几个维度
-
硬件
服务器、SAN交换机、存储、网络交换机等。
SinoDB数据库硬件优化建议 -
操作系统
CPU、内存、磁盘IO、系统参数等 -
数据库
表、索引、dbspace、表分区设计;
数据库资源消耗情况;
Lock checkpoint 参数设置;
onconfig 配置参数;
数据库等待事件;
隔离级别;
统计信息过久;
执行计划选择错误;
数据库bug; -
应用及SQL
业务逻辑sql改写
top sql 优化;
3 定位问题常用工具和方法
-
操作系统工具
top sar vmstat iostat netstat nmon mpstat dd iftop
查看操作系统在异常时段,CPU 使用率、负载、内存大小、磁盘IO情况、网络流量情况。
cpu 使用率,
是否存在大量硬解析,是否大量连接数执行sql,PDQ并行的使用。
存储磁盘IO
raid 配置,操作系统、数据库异步IO方面配置等。
内存:
数据库所占总内存比例。
V段内存的增长情况。网络:
连接数数量,连接时长、网卡聚合方式、网卡带宽、交换机错误率、丢包率等。 -
数据库系统工具
onstat ,系统表,查看执行计划工具等。
查看的内容:
查看锁等待数量、死锁;
锁使用最多的表;
查看数据热块;
索引、分区表的使用;
统计信息更新;
多次全表扫描的表;
物理日志空间大小和个数;
逻辑日志大小和个数;
临时表空间大小和个数;
数据库等待事件;
- 应用开发
应用程序的业务逻辑和实现逻辑。
应用程序的调度JOB频率和时间点。
表、索引、分片分区设计。
备份任务策略和启动时间点