一、操作系统层面优化
/etc/sysctl.conf文件,设置vm.swappiness=10(降低Swap使用优先级,减少内存与磁盘的交换开销)、vm.dirty_ratio=20(系统内存脏页占比阈值,控制脏页写入磁盘的频率)、vm.dirty_background_ratio=10(后台刷脏页的阈值,平衡内存与I/O负载);添加net.core.somaxconn=65535(增大最大连接队列长度,避免连接堆积)、net.ipv4.tcp_tw_reuse=1(允许复用TIME_WAIT套接字,提升TCP连接效率)。执行sysctl -p使设置生效。cat /sys/block/sda/queue/scheduler),临时修改为deadline(适合数据库场景,减少I/O等待时间):echo deadline > /sys/block/sda/queue/scheduler;永久生效需修改GRUB配置(编辑/etc/default/grub,在GRUB_CMDLINE_LINUX中添加elevator=deadline,然后执行grub2-mkconfig -o /boot/grub2/grub.cfg)。/etc/fstab中为数据分区添加noatime,nodiratime选项(禁止记录文件/目录访问时间,减少不必要的磁盘写入),例如:/dev/sda1 /data xfs defaults,noatime,nodiratime 0 0。二、数据库配置优化
BUFFERS参数(数据缓冲区数量,建议为物理内存的20%-25%,单位为页,如1024MB物理内存设置为(1024*1024)/4KB=262144页),提高热数据缓存命中率;合理设置CLEANERS参数(页清除线索数目,磁盘数<20时取磁盘数,20-100时取磁盘数/2,>100时取磁盘数/4且不超过128),确保及时将脏页写入磁盘;调整LOGBUFF(逻辑日志缓冲区大小,建议16KB或32KB,繁忙应用可设为64KB)和PHYSBUFF(物理日志缓冲区大小,建议16页),减少日志写入频率。NUMCPUVPS参数(虚处理器数目)应根据CPU资源调整:OLTP应用设置为“实际CPU数量-1”(单CPU系统设为1),OLAP应用设置为“实际CPU数量”(充分利用多核处理查询);避免设置过大导致CPU竞争,增加上下文切换开销。三、存储技术与架构优化
lvextend扩展逻辑卷,resize2fs/xfs_growfs扩展文件系统),避免磁盘空间不足导致的停机;选择XFS文件系统(支持动态扩展、高吞吐量,适合数据库场景),挂载时添加noatime,nodiratime选项。COMPRESS属性压缩表/列,支持行级、列级压缩),减少存储空间占用(压缩率通常为30%-70%);对于重复数据较多的场景,启用VDO(Virtual Data Optimizer)实现透明数据去重,进一步降低磁盘容量需求。PARTITION BY RANGE语法),提高查询性能(仅扫描相关分区,减少I/O量);简化维护操作(如单独备份/删除旧分区,ALTER TABLE ... DROP PARTITION快速删除历史数据)。四、索引与查询优化
WHERE子句中的列)创建索引(如CREATE INDEX idx_orders_customer_id ON orders(customer_id)),避免全表扫描;使用复合索引(如CREATE INDEX idx_name_age ON customers(name, age))提高多条件查询效率;避免在索引列上使用函数(如WHERE UPPER(name) = 'JOHN'),否则会导致索引失效。SELECT *(只选择需要的列,减少数据传输量);使用EXPLAIN分析查询计划(识别全表扫描、临时表等瓶颈,优化SQL语句);减少子查询与临时表(如用JOIN替代子查询),降低数据库负载。五、定期维护操作
rm命令或find命令查找并删除超过30天的备份文件);重建索引(REBUILD INDEX命令)消除索引碎片,提高查询效率;收缩表空间(SHRINK命令)释放表/分片末尾的空闲空间,减少存储占用。UPDATE STATISTICS命令更新表统计信息,帮助优化器生成更优的执行计划(避免因统计信息过时导致的全表扫描);定期执行REORGANIZE TABLE整理表碎片,提升空间利用率。六、监控与分析
onstat命令查看缓冲池命中率、锁等待情况,onmode命令调整数据库模式)、第三方工具(如IBM Data Server Manager监控数据库性能,Zabbix监控磁盘I/O、CPU使用率)实时监控系统状态。iostat命令查看await(平均等待时间)、%util(磁盘利用率),若%util接近100%说明磁盘瓶颈)、内存使用情况(使用free命令查看缓存/缓冲区使用率,若内存不足需调整缓冲池参数)、SQL执行情况(通过onstat -g sql查看慢查询,针对性优化)。