数据库软硬件选型的思考

发布时间 2023-12-20 17:44:06作者: 济南小老虎

数据库软硬件选型的思考


背景

最近有多个项目出现过数据库的问题
这里想总结语一下遇到的问题. 以及可能的软硬件优化方案与思路. 

暂时还没有进行过系统的测试验证, 所以仅是一个思考, 后续会慢慢完善.

硬件选型

截止现在 2024年元旦之前. 

Oracle数据库我认为还是选择 Intel的CPU更好. 
Intel CPU虽然在第四代志强可扩展的巨量核心的XCC模式下, 使用了Chiplet的模式.
但是大部分CPU 还是 一个CPU 一个宏核心的
这种情况下同一个CPUsocket下面的core的延迟是相仿的. 不会出现比较大的波动. 

建议是选择高主频的CPU, 建议至少2.5Ghz起步, 越高越好. 
高主频能够带来更快的计算锁定和资源的锁定时间. 

服务器认为可以选择 2路服务器组建rac等模式. 
四路服务器其实numa节点有点多, 对性能并不是特别友好. 
高主频,高内核数的两路服务器, 不见得比一般配置的四路服务器性能差. 

存储的话 建议选择性能较高的存储.
网络选择高性能的交换机, 并且建议使用数据库专用的模式. 
网线也尽量选择大品牌 尽量减少弯折 

操作系统

建议选择次新版本的 红帽,或者是 Oracle Enterprise Linux系统.
可以使用oracle的preinstall 进行参数设置. 这里之前总结过,参数还是比较多的. 

如果是物理机, 建议在bios内部关闭 numa, 操作系统也尽量关闭numa参数. 
强烈建议关闭透明大页, 开启大页内容, 将SGA的区域填充进大页区域:
1: 减少TLBMiss.
2. 避免因为其他文件读写,网络传输等将数据库的buffer区域内的被换进换出, 导致性能衰退. 

优化TCP/Port/nofile/nproc 等参数. 

可能有backlog,somaxconn,time_wait等等参数. 
并且增加上监控,预警等措施. 

如果是虚拟机的话 需要注意 socket和numa节点的设置
建议还是 设置为 socket 少一些, 每个socket 内的核心数量尽量不要超过物理机 单socket 的核心数据. 

数据库的注意事项

1. SGA/PGA的设置. 
2. process/session 的设置.
3. 密码错误失败的设置.
4. redo空间设置,回收站设置.
5. undo_retention 的设置不建议太高. 
6. 其他优化设置. 
7. 12c以后得 idle_time 以及 max_idle_blocker_time 等设置, 不建议太小,避免影响正常业务和连接池.