SQL Server Databases性能计数器对象
Monday, March 22, 2010
SQL Server Databases 对象2008
SQL Server 中的 SQLServer:Databases 对象提供了计数器,来监视大容量复制操作、备份和还原吞吐量以及事务日志活动。监视事务及事务日志确定数据库中进行的用户活动数量及事务日志的饱满程度。用户活动数量可以确定数据库的性能并影响日志大小、锁和复制。监视低级日志活动以测量用户活动和资源使用情况,有助于查明性能瓶颈。
可以同时监视 Databases 对象的多个实例,每个实例代表一个数据库。
下表说明了 SQL Server Databases 计数器。
| SQL Server Databases 计数器 | 说明 |
| Active Transactions | 数据库的活动事务数。 |
| Backup/Restore Throughput/sec | 每秒数据库的备份和还原操作的读取/写入吞吐量。例如,并行使用多个备份设备或使用更快的设备时,可以测量数据库备份操作性能的变化情况。数据库的备份或还原操作的吞吐量可以确定备份和还原操作的进程和性能。 |
| Bulk Copy Rows/sec | 每秒大容量复制的行数。 |
| Bulk Copy Throughput/sec | 每秒大容量复制的数据量 (KB)。 |
| Data File(s) Size (KB) | 数据库中所有数据文件的累计大小 (KB),包括任何自动增长。监视此计数器非常有用,例如可以确定 tempdb 的准确大小。 |
| DBCC Logical Scan Bytes/sec | 每秒数据库命令控制台 (DBCC) 语句的逻辑读取扫描字节数。 |
| Log Bytes Flushed/sec | 刷新的日志字节总数。 |
| Log Cache Hit Ratio | 日志缓存所满足的日志缓存读取数所占的百分比。 |
| Log Cache Reads/sec | 每秒通过日志管理器缓存执行的读取数。 |
| Log File(s) Size (KB) | 数据库中所有事务日志文件的累计大小 (KB)。 |
| Log File(s) Used Size (KB) | 数据库中所有日志文件的累计已用大小。 |
| Log Flush Wait Time | 刷新日志的总等待时间(毫秒)。 |
| Log Flush Waits/sec | 每秒等待日志刷新的提交数目。 |
| Log Flushes/sec | 每秒日志刷新数目。 |
| Log Growths | 数据库事务日志增长的总次数。 |
| Log Shrinks | 数据库事务日志收缩的总次数。 |
| Log Truncations | 数据库事务日志截断的总次数。 |
| Percent Log Used | 日志中已用空间所占的百分比。 |
| Repl.Pending Xacts | 发布数据库事务日志中已做复制标记但尚未传递到分发数据库的事务数。 |
| Repl. Trans. Rate | 每秒从发布数据库事务日志中读出并传递到分发数据库的事务数。 |
| Shrink Data Movement Bytes/sec | 每秒由自动收缩操作或者 DBCC SHRINKDATABASE 或 DBCC SHRINKFILE 语句移动的数据量。 |
| Transactions/sec | 每秒为数据库启动的事务数。 |
| Write Transactions/sec | 在上一秒钟内写入数据库并提交的事务数。 |
SQL Server Databases 对象2005
SQL Server 中的 SQLServer:Databases 对象提供了计数器,来监视大容量复制操作、备份和还原吞吐量以及事务日志活动。监视事务及事务日志确定数据库中进行的用户活动数量及事务日志的饱满程度。用户活动数量可以确定数据库的性能并影响日志大小、锁和复制。监视低级日志活动以测量用户活动和资源使用情况,有助于查明性能瓶颈。
可以同时监视 Databases 对象的多个实例,每个实例代表一个数据库。
下表说明了 SQL Server Databases 计数器。
| SQL Server Databases 计数器 | 说明 |
| Active Transactions | 数据库的活动事务数。 |
| Backup/Restore Throughput/sec | 每秒数据库的备份和还原操作的读取/写入吞吐量。例如,并行使用多个备份设备或使用更快的设备时,可以测量数据库备份操作性能的变化情况。数据库的备份或还原操作的吞吐量可以确定备份和还原操作的进程和性能。 |
| Bulk Copy Rows/sec | 每秒大容量复制的行数。 |
| Bulk Copy Throughput/sec | 每秒大容量复制的数据量 (KB)。 |
| Data File(s) Size (KB) | 数据库中所有数据文件的累计大小 (KB),包括任何自动增长。监视此计数器非常有用,例如可以确定 tempdb 的准确大小。 |
| DBCC Logical Scan Bytes/sec | 每秒数据库命令控制台 (DBCC) 语句的逻辑读取扫描字节数。 |
| Log Bytes Flushed/sec | 刷新的日志字节总数。 |
| Log Cache Hit Ratio | 日志缓存所满足的日志缓存读取数所占的百分比。 |
| Log Cache Reads/sec | 每秒通过日志管理器缓存执行的读取数。 |
| Log File(s) Size (KB) | 数据库中所有事务日志文件的累计大小 (KB)。 |
| Log File(s) Used Size (KB) | 数据库中所有日志文件的累计已用大小。 |
| Log Flush Wait Time | 刷新日志的总等待时间(毫秒)。 |
| Log Flush Waits/sec | 每秒等待日志刷新的提交数目。 |
| Log Flushes/sec | 每秒日志刷新数目。 |
| Log Growths | 数据库事务日志增长的总次数。 |
| Log Shrinks | 数据库事务日志收缩的总次数。 |
| Log Truncations | 数据库事务日志截断的总次数。 |
| Percent Log Used | 日志中已用空间所占的百分比。 |
| Repl.Pending Xacts | 发布数据库事务日志中已做复制标记但尚未传递到分发数据库的事务数。 |
| Repl. Trans. Rate | 每秒从发布数据库事务日志中读出并传递到分发数据库的事务数。 |
| Shrink Data Movement Bytes/sec | 每秒由自动收缩操作或者 DBCC SHRINKDATABASE 或 DBCC SHRINKFILE 语句移动的数据量。 |
| Transactions/sec | 每秒为数据库启动的事务数。 |
SQL性能监控重要性能指标的list
贴一下DBA同事的运维经验
对于运维人员来说,学会查看性能计数器是一个重要的技能手段
通过性能计数器,可以帮助我们缩小排查范围,快速定位问题原因
从系统角度来看,无外乎内存、磁盘、cpu等
(请注意我的次序,现在的cpu已几乎不成为服务器的瓶颈;cpu的性能问题,往往是由前2者引发的。磁盘性能问题,也有可能是内存引起的哦)
下面说说几个最主要的计数器:
----- ----- ----- ----- 以下部分摘自网上,红字部分是我个人的理解,欢迎指教与讨论 ----- ----- ----- -----
Memory: Pages/sec
描述:这个计数器记录每秒中RAM和硬盘上虚拟内存交换(换出+换入)的页数。
范围:如果SQL Server是这个服务器上唯一主要运行的应用,则这个值应该在0-20之间。当超出这个范围,建议增加物理内存。
(即越低越好,对维护人员来说,呵呵)
Memory: Available Bytes
描述:服务器可用的物理内存字节数
范围:这个计数器的平均值应该>5MB,SQL Server 2005 会试图一直维持4-10MB这个范围。当小于建议范围的时候,可以尝试提高SQL Server的性能,包括增加/3GB开关在Boot.ini文件。
(SQL会试图最大化的利用内存,你可以通过设置更改;最好给操作系统预留个几十M,方便应急情况下上去操作)
SQL Server: Buffer Manager: Buffer Cache Hit Ratio
描述:这个计数器相当重要,它说明了SQL Server 从缓冲区获取数据的命中率(如果缓冲区没有,只能去访问硬盘)。
范围:这个值应该在90%以上,理想情况是99%以上。当值比较低的时候,建议增加物理内存。
(即越高越好)
Physical Disk: Avg. Disk Queue Length
描述:这个计数器表明的是物理磁盘阵列的压力,即目前磁盘读取和写入请求队列的平均值。
范围:对单独的一个磁盘,如果其值大于2(如果是做了RAID的一组盘,假定有5个物理盘,则此判定值为2*5=10),且持续10分钟以上,则你可能碰到了磁盘I/O的瓶颈。因此这个值对单个磁盘应该 <=2。
(应用服务器也适用)
Physical Disk: % Disk Time
描述:这个计数器是判定物理磁盘阵列压力的指标。(不能针对一个逻辑分区或者阵列中的独立磁盘)
范围:如果这个值超过55%并持续10分钟以上,则数据库碰到了磁盘I/O瓶颈。因此这个值应该 <=55%。
(这是一个读/写的时间比值。读与写,事实上不同的厂家有不同的实现算法,所以相对于上一个计数器,这个指数我不常看,55%大家作个参考吧)
Processor: % Processor Time
描述:在数据库服务器上,每一个CPU都有此计数器的一个实例,它表明了独立CPU的利用率。
范围:如果总的% Processor Time (_Total) 超过80%且持续10分钟以上,就可能碰到了CPU的瓶颈。因此应该 <=80%。
(80%已经是严重问题了,到这个值以上服务器性能将急剧下降,应立即报警!个人认为60%就应重视起来,要去分析解决)
System: Processor Queue Length
描述:CPU处理任务队列中的任务个数。
范围:如果每个独立CPU,这个数值超过2,且持续10分钟以上,就可能碰到了CPU的瓶颈。因此对于每个独立CPU应该 <=2。
(应用服务器也适用)
----- ----- ----- ----- ----- ----- ----- -----
再附一个sql server的性能计数器,需要专业知识,有兴趣上官网,呵呵
除性能计数器外,SQL还有一些自带的监视、分析工具,这里篇幅有限不多写了,大家可以自己google一下(抓紧时间用吧)。主要的有:
² 管理sp、动态管理视图(SQL2005,很不错,推荐)
² SMS中的报表(傻瓜工具)
² 活动监视器
² profile(探查器?比较消耗资源,建议重要的生产库不要多用)
最后老生常谈一下:应用层、中间层的实现方式至关重要,到数据库层再来优化的就很有限了
LINUX常用操作命令和命令行编辑快捷键
Thursday, March 11, 2010
Ctrl+d 删除光标所在处字符
Ctrl+h 删除光标所在处前一个字符
Ctrl+b 光标向前移动一个字符
Ctrl+f 光标向后移动一个字符
Ctrl+u 剪切命令行中光标所在处之前的所有字符(不包括自身)
Ctrl+k 剪切命令行中光标所在处之后的所有字符(包括自身)
Ctrl+a 光标移动到最前
Ctrl+e 光标移动到最后
Ctrl+p 往上一条历史命令
Ctrl+n 往下一条命令
Ctrl+w 剪切光标所在处之前的一个词(以空格、标点等为分隔符)
Ctrl+y 粘贴刚才所删除的字符
Ctrl+xu 按住Ctrl的同时再先后按x和u,撤销刚才的操作
Ctrl+v 插入特殊字符,如Ctrl+v+Tab加入Tab字符键
Ctrl+s 挂起当前shell
Ctrl+q 重新启用挂起的shell
Ctrl+r 然后输入若干字符,开始向上搜索包含该字符的命令,继续按Ctrl+r,搜索上一条匹配的命令
Ctrl+l 清屏
Ctrl+t 颠倒光标所在处及其之前的字符位置,并将光标移动到下一个字符
Ctrl+c 删除整行
history 显示命令历史列表
↑(Ctrl+p) 显示上一条命令
↓(Ctrl+n) 显示下一条命令
!num 执行命令历史列表的第num条命令
!! 执行上一条命令
!?string? 执行含有string字符串的最新命令
ls !$ 执行命令ls,并以上一条命令的参数为其参数
Alt+< 历史列表第一项
Alt+> 历史列表最后一项
Alt+f 光标向前移动一个单词
Alt+b 光标向后移动一个单词
Alt+d 剪切光标之后的词
Esc+w 删除光标所在处之前的字符至其单词尾(以空格、标点等为分隔符)
Alt+t 交换当前与以前单词的位置
Alt+u 把当前词转化为大写
Alt+l 把当前词转化为小写
Alt+c 把当前词汇变成首字符大写
Esc+t 颠倒光标所在处及其相邻单词的位置
Esc+b 移动到当前单词的开头
Esc+f 移动到当前单词的结尾
正则表达式组详解(转)
Friday, February 5, 2010
正则表达式组与向后引用的关系是什么呢?我们在学习正则表达式组的时候需要注意什么呢?那么这里我们来详细的看看具体的到底有什么是关键点。
正则表达式组的理解
把正则表达式的一部分放在圆括号内,你可以将它们形成组。然后你可以对整个组使用一些正则操作,例如重复操作符。
要注意的是,只有圆括号"()"才能用于形成组。"[]"用于定义字符集。"{}"用于定义重复操作。
当用"()"定义了一个正则表达式组后,正则引擎则会把被匹配的组按照顺序编号,存入缓存。当对被匹配的组进行向后引用的时候,可以用"\数字"的 方式进行引用。﹤﹤\1﹥﹥引用第一个匹配的后向引用组,﹤﹤\2﹥﹥引用第二个组,以此类推,﹤﹤\n﹥﹥引用第n个组。而﹤﹤\0﹥﹥则引用整个被匹 配的正则表达式本身。我们看一个例子。
假设你想匹配一个HTML标签的开始标签和结束标签,以及标签中间的文本。比如﹤B﹥This is a test﹤/B﹥,我们要匹配﹤B﹥和﹤/B﹥以及中间的文字。我们可以用如下正则表达式:"﹤([A-Z][A-Z0-9]*)[^﹥]*﹥.*?﹤ /\1﹥"
首先,"﹤"将会匹配"﹤B﹥"的第一个字符"﹤"。然后[A-Z]匹配B,[A-Z0-9]*将会匹配0到多次字母数字,后面紧接着0到多个非 "﹥"的字符。最后正则表达式的"﹥"将会匹配"﹤B﹥"的"﹥"。接下来正则引擎将对结束标签之前的字符进行惰性匹配,直到遇到一个"﹤/"符号。然后 正则表达式中的"\1"表示对前面匹配的组"([A-Z][A-Z0-9]*)"进行引用,在本例中,被引用的是标签名"B"。所以需要被匹配的结尾标签 为"﹤/B﹥"
正则表达式组的相关解析:
你可以对相同的后向引用组进行多次引用,﹤﹤([a-c])x\1x\1﹥﹥将匹配"axaxa"、"bxbxb"以及"cxcxc"。如果用数字 形式引用的组没有有效的匹配,则引用到的内容简单的为空。
一个后向引用不能用于它自身。﹤﹤([abc]\1)﹥﹥是错误的。因此你不能将﹤﹤\0﹥﹥用于一个正则表达式匹配本身,它只能用于替换操作中。
后向引用不能用于字符集内部。﹤﹤(a)[\1b]﹥﹥中的﹤﹤\1﹥﹥并不表示后向引用。在字符集内部,﹤﹤\1﹥﹥可以被解释为八进制形式的转 码。
向后引用会降低引擎的速度,因为它需要存储匹配的组。如果你不需要向后引用,你可以告诉引擎对某个组不存储。例 如:﹤﹤Get(?:Value)﹥﹥。其中"("后面紧跟的"?:"会告诉引擎对于组(Value),不存储匹配的值以供后向引用。
正则表达式组之重复操作与后向引用
当对组使用重复操作符时,缓存里后向引用内容会被不断刷新,只保留最后匹配的内容。例如:﹤﹤([abc]+)=\1﹥﹥将匹配 "cab=cab",但是﹤﹤([abc])+=\1﹥﹥却不会。因为([abc])第一次匹配"c"时,"\1"代表"c";然后([abc])会继续 匹配"a"和"b"。最后"\1"代表"b",所以它会匹配"cab=b"。
应用:检查重复单词--当编辑文字时,很容易就会输入重复单词,例如"the the"。使用﹤﹤\b(\w+)\s+\1\b﹥﹥可以检测到这些重复单词。要删除第二个单词,只要简单的利用替换功能替换掉"\1"就可以了。
正则表达式组的命名和引用
在PHP,Python中,可以用﹤﹤(?P﹤name﹥group)﹥﹥来对组进行命名。在本例中,词法?P﹤name﹥就是对组(group) 进行了命名。其中name是你对组的起的名字。你可以用(?P=name)进行引用。
