1 服务器硬件
CPU:MYSQL不支持多CPU对同一SQL处理,多核可同时处理多条数SQL
并发多 核数重要
密集计算 频率重要
内存:增加内存可改善IO问题
内存可将随机读写 变成 顺序读写 增大读写速度
磁盘IO :raid 1 raid 0 raid 5 raid 10 常用的
机械硬盘
固态存储
适用于存在大量随机IO场景
适用于解决单线程负载的IO瓶颈
更好的随机读写性能
更好的支持并发
同样支持RAID技术
Function IO 用PCI-E接口 性能好于SSD 会消耗CPU 和内存资源
网络存储 适合数据库备份
SAN 光千 相当于硬盘
NAS 基于文件协议
网络IO
延迟
带宽
2 服务器操作系统
CentOS 参数
3数据库存储引擎
插件式存储引擎 客户端->服务层->存储引擎层
MyISAM:不支持事务,表级锁,共享锁 读写阻塞 读读不阻塞
InnoDb:支持事务 完美支持行级锁 事务ACID特性 建议使用独立表空间
阻塞 事务占用 死锁 事务占用且循环占用 回滚其中一条事务可解决 共享锁 排它锁
4 数据库参数配置(影响大)
可从两个方式获取配置信息 命令行 配置文件
centos mysql读取配置信息的顺序 可用mysqld_safe --datadir = /data/sql_data
配置参数作用域 全局参数 set global 参数名=参数值 set @@global 参数名=参数值 会话参数 set[session] 参数名=参数值
内存配置项
确定可以使用的内存上限 和 每个线程使用的内存 避免分配内存过大 导致内存溢出 以至于MYSQL崩溃
sort_buffer_size 排序缓冲区内存 如果设置100m 有100个连接 将使用10G内存
join_buffer_size 连表缓冲区 一个连接一个分配 三张表则有两个连接
read_buffer_size 全表扫描 分配该参数大小内存
read_rnd_buffer_size 索引参数大小 分配需要的大小不是设置参数的大小
Innodb_buffer_pool_size INNODB缓存池大小