1、sql(造成数据库性能低下的原因-->80%是由于慢查询造成的)
2、硬件
3、内存
QPS和TPS的区别:
QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
4、大量的并发和超高的CPU使用率
大量的并发: 造成数据库连接数被占满(max_connections默认100)
超高的CPU使用率:可以导致 CPU资源耗尽而宕机
5、磁盘IO
磁盘IO突然下降(使用更快的磁盘设备)
其他消耗磁盘性能的计划(提前做好调整)
6、网卡流量
网卡流量被占满(1000MB/8=100mb)
如何避免无法连接数据库的情况:
1、减少从服务器的数量
2、进行分页缓存
3、避免select * 的查询
4、分离业务网络和服务器网络
7、大表和大事物
一、大表带来的影响?
什么是大表?记录超过千万行/表数据文件超过是个10G
大表对查询的影响?
①慢查询:很难查询在一定时间内过滤的所需数据
②对DDL操作的影响?
建立索引需要很长的时间
风险:mysql<5.5 建立索引会锁表 mysql>=5.5 建立索引不会锁表 但会造成主从延迟
③修改表结构会长时间锁表-->会造成主从延迟
如果处理数据库中的大表?
①分库分表把一张大表分成多个小表
难点
1.1分表主键的选择
1.2分表后跨分区的查询和统计
②大表的历史数据归档--》减少对前后端业务的影响
难点
2.1归档时间点的选择
2.2如何进行归档操作
二、大的事物带来影响?
事物?
1、事物是数据库系统区别于其他一切文件系统的重要特征
2、事物是一组具有原子性的sql语句,或是一个独立的工作单位
原子性:
隔离性:
sql中定义四中隔离级别:
脏读:未提交读
已提交读
可重复读
可串行化
隔离性由低到高,并发性由高到低
一致性:
永久性:
大事物:?运行时间比较长,操作的数据比较多
风险:
1、锁定太多的数据,造成大量的阻塞和超时
2、回滚所需要的时间较长
3、执行时间长,容易造成主从延迟
如果处理大事物:
1、避免一次处理过多的数据
2、移除不必要的在事物中的select操作