目录
一.阶段性成果
DAS控制台
7月6日 VS 9月13日(索引优化和sql优化)
9月13日 VS 9月22日(日志分库)
主要操作:索引优化、sql优化、日志分库
二.RDS知识总结
性能指标
页生命周期 | Page_Life_Expectancy(秒) | 页生命周期 | 是诊断缓存的一个常用性能指标,表示平均每个缓存的数据页在内存中驻留的时间,单位为秒。时间越短,意味着实例的内存压力越大。 |
QPS / TPS | QPS(个) | 每秒批处理请求数。 | 数据库每秒执行的SQL数,包含INSERT、SELECT、UPDATE、DETELE、COMMIT等 |
TPS_Transactions(个) | 每秒为数据库启动的事务数。 | TPS指的是系统吞度量,也是每秒系统处理的数量。可基于测试周期内完成的事务数量计算得出。例如,用户每分钟执行6个事务,TPS为6 /60s = 0.10 TPS。假如TPS每秒并发太低,很容易造成网络拥堵严重 | |
TPS_Transactions_Writes(个) | 在上一秒钟内写入数据库并提交的事务数。 | 有许多事务执行时间不同,也有未提交事务。每个事务量大小不同,执行的时间也不同 | |
Log性能 | Log_Bytes_Flushed/sec(byte) | 每秒刷新的日志大小。 | 每秒向日志文件中写入的字节数,增、删、改操作会产生日志操作多。Log_Bytes_Flushed/sec指标也会升高 |
进程阻塞 | Longest_Transaction_Running_Time(秒) | 长的事务启动后运行的时间长度 | 监视使用行版本控制的事务的最长运行时间(秒)。 这可用于确定是否存在事务的运行时间不合适的情况 |
Processes_Blocked(个) | 当前阻塞的进程数。 | ||
IO吞吐量 | IO_Throughput_Read_Kb | IO读取吞吐量。 | |
IO_Throughput_Total_Kb | IO总吞吐量。 | ||
IO_Throughput_Write_kb | IO写入吞吐量。 | ||
连接相关 | Active_Sessions(个) | 活跃会话数量。 | 当前在消耗系统资源的会话 |
Total_Connections(个) | 当前与 SQL Server 连接的用户数。 | 连接池会保持用户的连接 | |
CPU使用率 | CPU_Utilization(%) | CPU使用率。 | |
线程等待 | ASYNC_NETWORK_IO(ms) | 数据库服务等待客户端取走数据的等待时间。 | |
CXPACKET(ms) | 线程正在等待其他并行线程处理完成。 | ||
IO_COMPLETION(ms) | 等待 I/O 操作完成。 | ||
PAGEIOLATCH_SH(ms) | 任务等待 I/O 请求(共享模式)中缓冲区的闩锁。 | 提示 I/O 压力 | |
PAGEIOLATCH_UP(ms) | 任务等待 I/O 请求(更新模式)中缓冲区的闩锁。 | 提示 I/O 压力 | |
PAGELATCH_SH(ms) | 任务等待不处于 I/O 请求(共享模式)中的缓冲区闩锁。 | 提示Tempdb资源争抢,内存压力 | |
SOS_SCHEDULER_YIELD(ms) | 该等待与CPU有直接关系。 | 提示CPU压力 |
Average Active Sessions(AAS)
Active Session:At any given time, there are users connected to the database, each of them performing some work, a query, an update…a report. Some sessions might be idle, some might be waiting on resources, some might be actively doing work. The sessions are using resources: CPU, I/O...
AAS = DBTime / ClockTime
DBTime&ClockTime
In the example above the AAS=10/5=2
If AAS ~ 0 then the database is idle.
If AAS < 1 the database is fine
If AAS the database is fine
If AAS ~ # of CPUs there might be performance problems
If AAS > # of CPUs there is definitely a performance problem.
锁优化
- Processes_blocked:被阻塞的会话数量。
- Uncommited_tran:未被提交的事务数量。
两者关联关系:锁不被释放的原因,即事务未被提交
采样原理
通常,单个会话阻塞2秒左右不会有太大问题,但短期内连续出现多个会话阻塞超过2秒的情况就会对整个系统产生显著影响。
系统每10秒会对锁阻塞的情况进行一次采样,在系统进行采样的时间点,只要当一个会话执行SQL时间超过2秒、并且阻塞了其他会话的执行,就会被捕捉并统计到锁阻塞统计页面。
零碎知识
- RDS SQL Server如何回收表空间。
RDS SQL Server在删除变长列或者减小变长列的长度后,表的大小不会自动减小。其中变长列包括的字段类型有varchar、nvarchar、varchar(max)、 nvarchar(max)、varbinary、text、ntext、image、sql_variant、varbinary(max)、xml。
空间是不会自动回收的,每个记录都占了一个位置。即使删除了数据,位置也会空在那里,下次插入记录的时候,会优先选这些空的槽位。SQL Server所有的表都是在数据库的文件里,只有收缩文件才可以缩小空间。通过 DBCC CLEANTABLE 语句
- 半同步:应用发起的更新在主实例执行完成后,会将日志同步传输到备实例,备实例收到日志,表示事务完成提交,不需要等待备实例执行日志内容。当备实例不可用或者主备实例间出现网络异常时,半同步会退化为异步。
- IOPS:Input/Output Operations Per Second,以4 KB为单位,每秒进行块设备读写操作的次数。
- Page: SQL Server 中数据存储的基本单位是页。为数据库中的数据文件(.mdf 或 .ndf)分配的磁盘空间可以从逻辑上划分成页(从 0 到 n连续编号)。磁盘 I/O 操作在页级执行。
- DAS的使用
- SLS中RDS审计中心的使用
三.索引建立
1.RDS中CloudDBA中的索引缺失诊断。
2.通过脚本进行查询
3.对慢sql进行实验