数据库性能模型与容量规划   张瑞  @ Alibaba
问题与挑战 硬件设备选型 硬件选型 性能评估 数据库性能模型 评估应用对数据库的影响 响应时间为中心的优化方法 数据库容量规划 容量规划  预测风险
硬件测试与选型
硬件性能 -CPU Alibaba TPC-C 测试模型 * 以上数据针对 Alibaba 特定场景测试,不能作为普遍数据反映硬件的性能
测试模型设计 数据规模 缓存命中 避免物理 IO 数据分布 减少热点 数据操作 读写比例 典型操作 减少等待 IO , Latch
硬件性能 -IO 存储性能指标   IOPS  吞吐量 延迟时间 存储测试工具 Oracle Orion Oracle calibration_io(11g) 测试方案 小 IO 测试 IOPS 大 IO 测试吞吐量
磁盘性能分析 IOPS 转速,寻道延时, 吞吐量 转速,接口类型,内部 / 接口传输率
存储性能分析 IOPS 磁盘数量 缓存命中率 存储划分 吞吐量 端口数量 系统架构 串行 - 并行
正确使用存储 存储层   存储架构 存储划分 Raid 类型 OS 层 LVM 数据库 Raw device File system  ASM
硬件容量模型 主机 TPC-C  CPU 使用率 每秒逻辑读 存储 IOPS 吞吐量 响应时间 性能拐点 硬件容量模型是容量规划的前提
数据库性能模型
响应时间为中心的优化方法 优化的目标是降低响应时间 响应时间是用户体验第一要素 响应时间是性能问题的直接表现 影响数据库响应时间的因素 CPU IO Memory  Network
关键设备的响应延迟 L1 cache reference  0.5 ns Branch mispredict  5 ns L2 cache reference  7 ns Mutex lock/unlock  25 ns Main memory reference  100 ns Compress 1K bytes with Zippy  3,000 ns Send 2K bytes over 1 Gbps network  20,000 ns Read 1 MB sequentially from memory  250,000 ns Round trip within same datacenter  500,000 ns Disk seek  10,000,000ns Read 1 MB sequentially from disk   20,000,000ns Send packet CA->Netherlands->CA  150,000,000ns 1s=1000ms=1000000us=1000000000ns *  数据来自于 Google  Jeff Dean 的资料
ORACLE 时间模型 服务时间 后台进程 前台进程 等待时间 IO 等待 并发等待 SQL 执行时间 服务时间 + 等待时间 用户响应时间 SQL 执行时间 + 网络传输
ORACLE 中的时间信息 SQL exetute time SQL 服务时间 + 等待时间 DB CPU CPU 资源的消耗量 DB TIME 前台进程消耗时间的总和
AWR 等待时间分类 DB CPU logical read User IO sequential read scattered read Commit log file sync Concurrency latch buffer busy waits library cache lock/pin Application enqueue
数据库 IO 特点分析 日志文件顺序写 同步写入 连续位置的随机 IO  响应延时 <5ms 数据文件读写 异步写入 随机读与顺序读 响应延时 <10ms 瓶颈分析 IOPS :小 IO ,数据文件随机读,随机写,日志文件写 吞吐量:大 IO ,数据文件连续读
物理 IO 响应时间 Cache 对物理 IO 响应的影响 Sequential read 与 Scattered read Log file sync 与 log file parallel write
逻辑 IO 响应时间 逻辑读是性能度量的重要指标 衡量 SQL 所耗费的系统资源 包含 CPU ,物理 IO…… 逻辑 IO 的响应延时 204800 5us 逻辑 IO ,单块读 2GHz CPU 102400 10us 逻辑 IO ,单块读 1GHz CPU 50000 20us 逻辑 IO ,单块读 500MHz CPU 每秒处理次数 响应延迟 事件名称
数据库类型与响应时间 CPU 密集型 CPU time   85% User IO     10% Logical IO : 0.005 - 0.01ms 混合型 User I/O     60% CPU time    20% Logical IO : 0.05 - 0.1ms IO 密集型 User IO     85% CPU time     5% Logical IO : 0.1 - 0.5ms 
基于响应时间的优化原则 减少物理 IO 增大 buffer cache 缓存对象 提高 IO 响应 Sequential/scattered read  Log file sync/log file parallel write 减少并发等待 Latch Lock 减少逻辑 IO SQL 优化
消除热点 消除存储热点 数据分散在更多磁盘上 redo log 单独存放 减少 checkpoint 次数 消除数据库热点 latch:cache buffer chain  library cache pin buffer busy wait 消除应用热点 enqueue TX 数据密集修改 / 查询
容量规划与风险预测
容量规划 主机容量 DB CPU TIME <  主机 CPU 数量  ×  时间 逻辑 IO 数量  <  主机容量 CPU 利用率分析: Load Sys User IO 存储容量 物理 IO 数量  <  存储容量 物理 IO 响应时间
其他风险因素 数据库 除 IO 以外的等待时间小于 5% CPU 消耗 Hard parse Latch spin Shared pool 频繁函数调用 大量逻辑读 主机 硬件性能拐点 内存使用量过度 硬件损坏,性能降级
软硬件发展方向 硬件技术发展 CPU 性能巨大飞跃 SMP , NUMA , MPP  Flash 存储技术 软件架构改进 集中式 - 分布式  Scale up-Scale out Disk based-SSD based 未来发展趋势 高密度多核 CPU SSD 大规模普及 大型软硬件一体机
Q&A blog : www.HelloDBA.net email : [email_address] twitter : hellodba 技术领域:数据库高可用,分布式架构

数据库性能模型与容量规划

  • 1.
  • 2.
    问题与挑战 硬件设备选型 硬件选型性能评估 数据库性能模型 评估应用对数据库的影响 响应时间为中心的优化方法 数据库容量规划 容量规划 预测风险
  • 3.
  • 4.
    硬件性能 -CPU AlibabaTPC-C 测试模型 * 以上数据针对 Alibaba 特定场景测试,不能作为普遍数据反映硬件的性能
  • 5.
    测试模型设计 数据规模 缓存命中避免物理 IO 数据分布 减少热点 数据操作 读写比例 典型操作 减少等待 IO , Latch
  • 6.
    硬件性能 -IO 存储性能指标 IOPS 吞吐量 延迟时间 存储测试工具 Oracle Orion Oracle calibration_io(11g) 测试方案 小 IO 测试 IOPS 大 IO 测试吞吐量
  • 7.
    磁盘性能分析 IOPS 转速,寻道延时,吞吐量 转速,接口类型,内部 / 接口传输率
  • 8.
    存储性能分析 IOPS 磁盘数量缓存命中率 存储划分 吞吐量 端口数量 系统架构 串行 - 并行
  • 9.
    正确使用存储 存储层 存储架构 存储划分 Raid 类型 OS 层 LVM 数据库 Raw device File system ASM
  • 10.
    硬件容量模型 主机 TPC-C CPU 使用率 每秒逻辑读 存储 IOPS 吞吐量 响应时间 性能拐点 硬件容量模型是容量规划的前提
  • 11.
  • 12.
    响应时间为中心的优化方法 优化的目标是降低响应时间 响应时间是用户体验第一要素响应时间是性能问题的直接表现 影响数据库响应时间的因素 CPU IO Memory Network
  • 13.
    关键设备的响应延迟 L1 cachereference 0.5 ns Branch mispredict 5 ns L2 cache reference 7 ns Mutex lock/unlock 25 ns Main memory reference 100 ns Compress 1K bytes with Zippy 3,000 ns Send 2K bytes over 1 Gbps network 20,000 ns Read 1 MB sequentially from memory 250,000 ns Round trip within same datacenter 500,000 ns Disk seek 10,000,000ns Read 1 MB sequentially from disk 20,000,000ns Send packet CA->Netherlands->CA 150,000,000ns 1s=1000ms=1000000us=1000000000ns * 数据来自于 Google Jeff Dean 的资料
  • 14.
    ORACLE 时间模型 服务时间后台进程 前台进程 等待时间 IO 等待 并发等待 SQL 执行时间 服务时间 + 等待时间 用户响应时间 SQL 执行时间 + 网络传输
  • 15.
    ORACLE 中的时间信息 SQLexetute time SQL 服务时间 + 等待时间 DB CPU CPU 资源的消耗量 DB TIME 前台进程消耗时间的总和
  • 16.
    AWR 等待时间分类 DBCPU logical read User IO sequential read scattered read Commit log file sync Concurrency latch buffer busy waits library cache lock/pin Application enqueue
  • 17.
    数据库 IO 特点分析日志文件顺序写 同步写入 连续位置的随机 IO 响应延时 <5ms 数据文件读写 异步写入 随机读与顺序读 响应延时 <10ms 瓶颈分析 IOPS :小 IO ,数据文件随机读,随机写,日志文件写 吞吐量:大 IO ,数据文件连续读
  • 18.
    物理 IO 响应时间Cache 对物理 IO 响应的影响 Sequential read 与 Scattered read Log file sync 与 log file parallel write
  • 19.
    逻辑 IO 响应时间逻辑读是性能度量的重要指标 衡量 SQL 所耗费的系统资源 包含 CPU ,物理 IO…… 逻辑 IO 的响应延时 204800 5us 逻辑 IO ,单块读 2GHz CPU 102400 10us 逻辑 IO ,单块读 1GHz CPU 50000 20us 逻辑 IO ,单块读 500MHz CPU 每秒处理次数 响应延迟 事件名称
  • 20.
    数据库类型与响应时间 CPU 密集型CPU time   85% User IO     10% Logical IO : 0.005 - 0.01ms 混合型 User I/O     60% CPU time    20% Logical IO : 0.05 - 0.1ms IO 密集型 User IO     85% CPU time     5% Logical IO : 0.1 - 0.5ms 
  • 21.
    基于响应时间的优化原则 减少物理 IO增大 buffer cache 缓存对象 提高 IO 响应 Sequential/scattered read Log file sync/log file parallel write 减少并发等待 Latch Lock 减少逻辑 IO SQL 优化
  • 22.
    消除热点 消除存储热点 数据分散在更多磁盘上redo log 单独存放 减少 checkpoint 次数 消除数据库热点 latch:cache buffer chain library cache pin buffer busy wait 消除应用热点 enqueue TX 数据密集修改 / 查询
  • 23.
  • 24.
    容量规划 主机容量 DBCPU TIME < 主机 CPU 数量 × 时间 逻辑 IO 数量 < 主机容量 CPU 利用率分析: Load Sys User IO 存储容量 物理 IO 数量 < 存储容量 物理 IO 响应时间
  • 25.
    其他风险因素 数据库 除IO 以外的等待时间小于 5% CPU 消耗 Hard parse Latch spin Shared pool 频繁函数调用 大量逻辑读 主机 硬件性能拐点 内存使用量过度 硬件损坏,性能降级
  • 26.
    软硬件发展方向 硬件技术发展 CPU性能巨大飞跃 SMP , NUMA , MPP Flash 存储技术 软件架构改进 集中式 - 分布式 Scale up-Scale out Disk based-SSD based 未来发展趋势 高密度多核 CPU SSD 大规模普及 大型软硬件一体机
  • 27.
    Q&A blog :www.HelloDBA.net email : [email_address] twitter : hellodba 技术领域:数据库高可用,分布式架构