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频率和时间点。
表、索引、分片分区设计。
备份任务策略和启动时间点 
