仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 996|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL教程之查找bad sql的办法

[复制链接]
分手快乐 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:42:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。查找badsql的办法查找运转体系里badsql是一个陈旧的话题,我们要依据本人的实践情形来剖析。
毫不能教条的使用上面先容的这些办法。
利用这些SQL语句时,会对体系表发生分组操纵,固然也增年夜了体系的负载。
倡议人人在体系启动了一段工夫后,在三更负载较轻的工夫准时(比方:一个月)来查一查。必定要详细成绩详细剖析。
上面是我保藏的一些查找badsql的办法:
columnsql_textformata80;
--值得嫌疑的SQL来自http://www.ixora.com.au/
select
substr(to_char(s.pct,99.00),2)||%load,
s.executionsexecutes,
p.sql_text
from
(
select
address,
disk_reads,
executions,
pct,
rank()over(orderbydisk_readsdesc)ranking
from
(
select
address,
disk_reads,
executions,
100*ratio_to_report(disk_reads)over()pct
from
sys.v_$sql
where
command_type!=47
)
where
disk_reads>50*executions
)s,
sys.v_$sqltextp
where
s.ranking<=5and
p.address=s.address
orderby
1,s.address,p.piece
/
--逻辑读多的SQL
select*from(selectbuffer_gets,sql_text
fromv$sqlarea
wherebuffer_gets>500000
orderbybuffer_getsdesc)whererownum<=30;
--实行次数多的SQL
selectsql_text,executionsfrom
(selectsql_text,executionsfromv$sqlareaorderbyexecutionsdesc)
whererownum<81;
--读硬盘多的SQL
selectsql_text,disk_readsfrom
(selectsql_text,disk_readsfromv$sqlareaorderbydisk_readsdesc)
whererownum<21;
--排序多的SQL
selectsql_text,sortsfrom
(selectsql_text,sortsfromv$sqlareaorderbysortsdesc)
whererownum<21;
--剖析的次数太多,实行的次数太少,要用绑变量的办法来写sql
setpagesize600;
setlinesize120;
selectsubstr(sql_text,1,80)"sql",count(*),sum(executions)"totexecs"
fromv$sqlarea
whereexecutions<5
groupbysubstr(sql_text,1,80)
havingcount(*)>30
orderby2;
--游标的察看
setpages300;
selectsum(a.value),b.name
fromv$sesstata,v$statnameb
wherea.statistic#=b.statistic#
andb.name=openedcursorscurrent
groupbyb.name;
selectcount(0)fromv$open_cursor;
selectuser_name,sql_text,count(0)fromv$open_cursor
groupbyuser_name,sql_texthavingcount(0)>30;
--检察以后用户&username实行的SQL
selectsql_textfromv$sqltext_with_newlineswhere(hash_value,address)in
(selectsql_hash_value,sql_addressfromv$sessionwhereusername=&username)
orderbyaddress,piece;
我们只需要把binlog文件反向执行,每个操作都执行逆操作即可。当然也不是所有的event都反转。Table_mapevent必须还是在Rows_log_event每个操作之前。
沙发
发表于 2015-1-19 21:27:25 | 只看该作者
你可以简单地认为适合的就是好,不适合就是不好。
分手快乐 该用户已被删除
板凳
 楼主| 发表于 2015-1-25 18:42:20 | 只看该作者
如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。
admin 该用户已被删除
地板
发表于 2015-2-3 13:10:36 | 只看该作者
但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。
简单生活 该用户已被删除
5#
发表于 2015-2-9 01:58:28 | 只看该作者
但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右)
只想知道 该用户已被删除
6#
发表于 2015-2-26 18:23:12 | 只看该作者
连做梦都在想页面结构是怎么样的,绝非虚言
飘飘悠悠 该用户已被删除
7#
发表于 2015-3-8 16:28:14 | 只看该作者
我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力
若天明 该用户已被删除
8#
发表于 2015-3-16 05:15:11 | 只看该作者
XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!)
蒙在股里 该用户已被删除
9#
发表于 2015-3-22 20:12:27 | 只看该作者
但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-26 14:20

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表