一、操作系统层面优化
sysctl命令或修改/etc/sysctl.conf文件,优化网络栈(如net.ipv4.tcp_tw_reuse=1复用TIME_WAIT连接)、文件系统(如vm.swappiness=10降低内存交换倾向)及内存管理参数(如fs.file-max=65536增加最大文件描述符数),提升系统资源利用率。noatime,nodiratime挂载选项(禁用文件访问时间更新),减少磁盘I/O开销;将数据库文件(如日志、数据、临时表空间)分散到不同物理磁盘,避免I/O争用。systemctl disable bluetooth),释放内存和CPU资源;使用ulimit -n增加进程可打开文件数,避免连接数过多导致性能下降。二、硬件资源优化
MULTIPROCESSOR=1启用多处理器支持,提升并行处理能力。net.core.rmem_max(接收缓冲区)、net.core.wmem_max(发送缓冲区)参数增大网络缓冲区,减少网络延迟;使用ethtool工具优化网卡性能(如开启GRO/GSO)。三、数据库配置优化
BUFFERPOOL(数据缓冲池,建议占物理内存的50%-70%)、LOCKS(锁缓存,避免锁争用)、LOGBUFF(日志缓冲区,高并发写入场景建议增大至8192-16384)等参数,提升缓存命中率。NUMCPUVPS(虚拟处理器数量)等于物理CPU核心数,启用MULTIPROCESSOR=1让数据库利用多核处理查询;根据负载类型调整SINGLE_CPU_VP(单核VP,适用于CPU密集型负载)。logdbs日志文件放在高速SSD,datadbs数据文件放在大容量SATA SSD),分离热点数据与冷数据,减少I/O冲突。四、查询与索引优化
EXPLAIN命令分析查询执行计划,避免全表扫描;避免SELECT *(只选择必要列),减少数据传输量;用JOIN替代子查询(JOIN通常更高效);合理使用WHERE子句(将过滤条件放在前面,利用索引加速)。WHERE、JOIN、ORDER BY子句中的高频列创建索引(如CREATE INDEX idx_lastname ON employees(lastname));使用复合索引(如CREATE INDEX idx_name_age ON employees(lastname, firstname)),注意索引列顺序与查询条件一致;避免在索引列上使用函数(如WHERE UPPER(name) = 'JOHN'会导致索引失效);定期使用onstat -g seg分析索引使用情况,删除未使用的索引。UPDATE STATISTICS命令(或onstat -g检查统计信息),确保查询优化器能生成最佳执行计划;对于频繁更新的表,可设置自动统计信息收集(如AUTO_STATISTICS=1)。五、监控与维护
onstat命令(如onstat -p查看缓冲区命中率、onstat -g ses查看会话信息)实时监控数据库性能;结合第三方工具(如Zabbix、Nagios)监控系统资源(CPU、内存、磁盘I/O)和数据库指标(连接数、查询响应时间),及时发现瓶颈。REORG TABLE(重组表,消除碎片)、REBUILD INDEX(重建索引,提升索引效率);每月更新统计信息;每季度清理无用数据(如过期日志、临时表),保持数据库健康。