硬件是数据库性能的基础,需根据业务负载选择合适的配置:
innodb_buffer_pool_size有足够空间缓存数据和索引。net.ipv4.tcp_tw_reuse),推荐千兆及以上网卡+交换机,提升网络传输效率。操作系统设置直接影响数据库资源利用率:
wce=1(启用写入缓存)、rcd=0(禁用读取缓存),提升I/O性能。vm.swappiness=0-10(减少内存交换)、vm.dirty_background_ratio=5-10(后台刷脏页阈值)、vm.dirty_ratio=10-20(强制刷脏页阈值);net.ipv4.tcp_max_syn_backlog=8192(增加SYN队列长度)、net.ipv4.tcp_tw_reuse=1(复用TIME_WAIT连接)、net.ipv4.tcp_fin_timeout=30(缩短FIN等待时间)。MySQL配置是性能优化的核心,需根据硬件资源调整关键参数:
innodb_buffer_pool_size设置为物理内存的50%-80%(InnoDB引擎的核心缓存,缓存数据和索引,显著提升查询性能)。max_connections根据并发用户数调整(如1000并发可设为1500),避免连接数耗尽导致拒绝服务;建议配合连接池(如mysqlnd_ms)使用,减少连接创建开销。innodb_log_file_size设置为256MB-1GB(平衡性能与数据安全性,大日志文件减少刷盘次数)、innodb_log_files_in_group=2(日志组数量,建议2-3个);innodb_flush_log_at_trx_commit=2(牺牲部分数据安全性换取性能,适用于高并发写入场景,但需定期备份)。索引是加速查询的关键,需合理设计和使用:
WHERE、JOIN、ORDER BY条件)创建索引,优先使用复合索引(覆盖多字段,如(user_id, create_time));避免在低重复率(如性别)或过长的字段(如TEXT)上创建索引。EXPLAIN分析查询计划,确保查询使用索引;LIMIT offset, size(如LIMIT 10000, 10),改用WHERE id > last_id LIMIT size(基于上一页最后一条记录的ID查询);SELECT *:只查询需要的字段,减少数据传输量。slow_query_log=1、long_query_time=1),使用pt-query-digest或mysqldumpslow工具分析慢查询,针对性优化。合理的表结构设计和定期维护能提升数据库长期性能:
INT代替BIGINT、VARCHAR(255)代替TEXT)、避免过度冗余(如将频繁更新的字段分离到单独表)、使用utf8mb4字符集(支持emoji,但占用更多空间)。OPTIMIZE TABLE命令(针对InnoDB表,重建索引,减少碎片);ANALYZE TABLE命令(更新表的统计信息,帮助优化器选择更好的执行计划);mysqldump或xtrabackup),确保数据安全。mysqlnd_ms、Druid)管理数据库连接,避免频繁创建和销毁连接的开销。