高性能MySQL学习笔记(一)

Mysql:不支持多CPU并发运算 每个sql 只能分配到一个cpu
超高的QPS和TPS (QPS:每秒处理的查询量)
例: 10ms 一个 sql 1s 能处理100sql QPS<=100 因为cpu还要处理其他的事情 所以小与等于
风险:效率低下的SQL
大量的并发和超高的CPU使用率
风险:
大量的并发: 数据库连接数被占满 (max_connections 默认为100)
超高的CPU使用率:因CPU资源耗尽而出现宕机
磁盘IO
风险:磁盘IO性能突然下降 (使用更快的磁盘设备)
其他大量消耗磁盘性能的计划任务(调整计划任务,做好磁盘维护)
网卡流量
风险:网卡IO被占满 (1000Mb/8 = 100MB)
如何避免无法连接数据库的情况:
1、减少 从服务器 的数量
2、进行分级缓存
3、避免使用 "select * " 进行查询
4、分离业务网络和服务器网络
还有什么会影响数据库性能:
大表、大事务
什么样的表可以称之为大表?
1、记录行数巨大,单表超过千万行
2、表数据文件巨大、表数据文件超过10G (如果为日志表 只有insert 或者update 一般不会有影响)
大表对查询的影响:
慢查询:很难在一定的时间内过滤出所需要的数据
大表对DDL操作的影响:
1、建立索引需要很长的时间
风险:
Mysql版本<5.5 建立索引会锁表
Mysql版本>=5.5 虽然不会锁表但会引起主从延迟
2、修改表结构需要长时间锁表
风险:
会造成长时间的主从延迟
影响正常的数据操作
如何处理数据库中的大表
1、分库分表把一张大表分成多个小表
难点:
分表主键的选择
分表后跨分区数据的查询和统计
2、大表的历史数据归档 减少对前后端业务的影响
难点:
归档时间点的选择
如何进行归档操作
什么是事务:
1、事务是数据库系统区别于其他一切文件,系统的重要特性之一
2、事务是一组具有原子性的SQL语句,或是一个独立的工作单元。
事务四大特性性{原子性、一致性、隔离性、持久性}
事务原子性(ATOMICITY)
定义:一个事务必须被视为一个不可分割的最小的工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败,对于一个事务来说,不可能只执行其中的一部分操作。
事务一致性:
定义:一致性是指事务将数据库从一种一致性状态转换到另外一种一致性状态,在事务开始之前和事务结束后数据库中数据的完整性没有被破坏。
事务隔离性:
定义:隔离性要求一个事务对数据库中数据的修改,在未提交完成前对于其他事务是不可见的。
SQL标准中定义的四种隔离级别 隔离性从低->高 并发性由高->低
1、未提交读(READ UNCOMMITED)
2、已提交读(READ COMMITED) (不可重复读)
3、可重复读(REPEATEABLE READ)
4、可串行化(SERIALIZABLE)
事务持久性:
定义:一旦事务提交,则其所作的修改就会永久保存到数据库中。此时即使系统崩溃,已经提交的修改数据也不会丢失。
什么是大事务:
定义:
运行时间比较长,操作的数据比较多的事务
风险:
锁定太多的数据,造成大量的阻塞和锁超时
回滚时所需时间比较长
执行时间长,容易造成主从延迟
如何处理大事务
1、避免一次处理太多的数据
2、移出不必要在事务中的SELECT操作

你可能感兴趣的:(高性能MySQL学习笔记(一))