01.数据库优化原则:
不影响业务稳定新和可持续性,然后再是性能;
优化则要变更,变更即是风险。
02.优化维度
硬件–>主机资源–>系统配置–>应用–>表结构–>SQL索引–>架构
03.逻辑结构

每个虚线框为一层,总共三层。 第一层,服务层(为客户端服务):为请求做连接处理,授权认证,安全等。 第二层,核心层:查询解析,分析,优化,缓存,提供内建函数;存储过程,触发器,视图。 第三层,存储引擎层,不光做存储和提取数据,而且针对特殊数据引擎还要做事务处理。
04.数据库层优化
优化工具使用:
mysqlshow 功能强大的查看shell命令 show [SESSION | GLOBAL] variables 查看数据库参数信息 SHOW [SESSION | GLOBAL] STATUS 查看数据库的状态信息 information_schema 获取元数据的方法 SHOW ENGINE INNODB STATUS Innodb 引擎的所有状态 SHOW PROCESSLIST 查看当前所有连接session状态 explain 获取查询语句的执行计划 show index 查看表的索引信息 slow-log 记录慢查询语句 mysqldumpslow 分析slowlog文件的 mysqlslap 分析慢日志
05.数据库参数:
实例层:
thread_concurrency # 并发线程数量个数 sort_buffer_size # 排序缓存 read_buffer_size # 顺序读取缓存 read_rnd_buffer_size # 随机读取缓存 key_buffer_size # 索引缓存 thread_cache_size # (1G—>8, 2G—>16, 3G—>32, >3G—>64)
连接层:
max_connections # 最大连接数,看交易笔数设置 max_connect_errors # 最大错误连接数,能大则大 connect_timeout # 连接超时 max_user_connections # 最大用户连接数 skip-name-resolve # 跳过域名解析 wait_timeout # 等待超时 back_log # 可以在堆栈中的连接数量
innodb存储引擎层:
default-storage-engine innodb_buffer_pool_size # 没有固定大小,50%测试值,看看情况再微调。但是尽量设置不要超过物理内存70% innodb_file_per_table=(1,0) innodb_flush_log_at_trx_commit=(0,1,2) # 1是最安全的,0是性能最高,2折中 binlog_sync Innodb_flush_method=(O_DIRECT, fdatasync) innodb_log_buffer_size # 100M以下 innodb_log_file_size # 100M 以下 innodb_log_files_in_group # 5个成员以下,一般2-3个够用(iblogfile0-N) innodb_max_dirty_pages_pct # 达到百分之75的时候刷写 内存脏页到磁盘。 log_bin max_binlog_cache_size # 可以不设置 max_binlog_size # 可以不设置 innodb_additional_mem_pool_size #小于2G内存的机器,推荐值是20M。32G内存以上100M
Comments | NOTHING