课程名称:扛得住的MySQL数据库架构
课程讲师:sqlercn
课程内容:
影响Mysql的性能因素:
sql查询速度:mysql不支持多CPU并发运算,一个Sql只能对应一个CPU
大量高并发:数据库连接数被占满(max——connenctions默认100)
CPU的使用率:因CPU使用率过高出现宕机
网卡流量:减少从服务器数量(因为从服务器要从主服务器复制日志)
使用分级缓存
减少使用select * 语句
分离业务网络和服务器网络
磁盘I/O:磁盘性能突然下降(使用更快的磁盘)
消耗磁盘的计划任务(调整计划任务,做好磁盘维护)
大表:记录行数大,单表操作过千万行
表数据文件巨大,表数据文件操作10G
问题:慢查询:
建立索引需要很长时间
风险:Mysql版本<5.5建立索引会锁表
MySql版本>5.5虽然不会锁表但会引起主从延迟
问题: 修改表结构需要长时间锁表
风险:会造成长时间主从延迟
影响正常的数据操作,连接数占满
处理方式:1.大表变为小表
难点:分表主键的选择
分表后跨分区的数据查询和统计
2.大表的历史数据归档
难点:归档时间点的选择
如何进行归档操作
事务:原子性
一致性
持久性
隔离性:
QPS:每秒查询量
TPS:每秒事务处理量
影响性能的几个方面:
服务器硬件:
CPU:
CPU密集型:加快SQL查询
Web类应用:CPU数量
内存:
网络:
磁盘:SSD,NAS,SAN,
操作系统:
数据库存储引擎:
MyISAM:不支持事务,表级锁,索引缓存在内存中,数据缓存在OS中
MySQl5.5之前版本默认的存储引擎
临时表:在排序,分组等操作中,当数量超过一定的大小之后,由查询优化器建立的临时表。
MyISAM存储引擎表由MYD和MYI组成
数据文件为myd为扩展名,索引文件为myi为扩展名
InnoDB:事务级存储引擎,完美支持行级锁,事务ACID特性,在内存中缓存索引和数据
存储引擎是针对表的而不是针对库的
数据库参数配置:
数据库表机构设计和SQl语句: