一、 影响mysql性能的因素。
- sql查询速度
- 服务器硬件(cpu、内存)
- 网卡流量
- 磁盘io。
- 大表
- 大事物
二、因素造成的影响
- 超高的QPS(每秒钟处理的查询了)和TPS(每秒的事物数)
风险:sql的执行效率地下。
2. 大量的并发和超高的cpu使用率。
风险:大量并发:数据库连接数被占满(最大连接数配置文件限制:max_connections默认100)。
超高的cpu使用率:因cpu资源耗尽而出现宕机。
3.磁盘io
风险:磁盘io性能突然下降(使用更快的磁盘设备)
其他大量消耗磁盘性能的计划任务(调整计划任务)。
4.网卡流量
风险:如何避免无法连接数据库的情况。
1、减少从服务器的数据量。
2、进行分级缓存。
3、尽量避免使用select *
4、分离业务网络和服务器网络。
5.大表
1、 什么是大表
记录行数巨大,单表超过千万行
表数据文件巨大,表数据文件超过10G。
2、影响
大表对查询的影响。
慢查询:很难在一定的时间内过滤出所需要的数据。
大表对DDL操作的影响
1、建立索引需要很长的时间。
风险: mysql版本<5.5建立索引会锁表。
mysql版本>=5.5虽然不会锁表但会引起主从延迟。
2、修改表结构需要长时间锁表
风险:长时间的主从延迟。
影响正常的数据操作。
3、处理
分库分表把一张大表分成多个小表。
难点:分表主键的选择。
分表后跨分区数据的查询和统计。
大表历史数据归档
难点:归档时间点的选择。
如何进行归档操作。
6.大事物
事物:1、事物是关系型数据库系统区别于其他一切文件系统的重要特性之一。
2、事物是一组具有原子性的sql语句,或是一个独立的工作单元。
特性: 原子性:一个事物必须被视为一个不可分割的最小工作单元,整个事物中的所有操作要么全部提交成功,要么全部失败。对于一个事物来说,不可能只执行其中的一部分操作。
一致性:事物将数据库从一种一致性状态转换到另外一种一致性状态,在事物开始和事物结束后数据库中数据的完整性没有被破坏。
隔离性:隔离性是要求一个事物对数据库中数据的修改,在未提交完成前对于其它事物是不可见的。
四种隔离级别:1 、未提交读(脏读)。
2 、已提交读()。
3、 可重复读。
4、可串行化。
持久性:一旦事物提交,则其所做的修改就会永久的保存到数据库中。此时即使系统崩溃,已经提交的修改数据也不会丢失。
大事物:运行时间比较长,操作的数据比较多的事物。
风险:锁定太多的数据,造成大力的阻塞和锁超时。
回滚时所需的时间比较长。
执行时间长,容易造成主从延迟。
如何处理:1、避免一次处理太多的数据。
2、移出不必要在事物中的select操作。