MSSQL网站制作之10046event 信步
其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。10046event信步:
假如你对oracle功能调优很感乐趣大概对照特长,那末你对oracle的10046事务必定不会生疏。10046event是oracle用于体系功能剖析时的一个最主要的事务。当激活这个事务后,将关照oraclekernel追踪会话的相干立即信息,并写进到响应trace文件中。这些有效的信息次要包含sql是怎样举行剖析,绑定变量的利用情形,会话中产生的守候事务等
10046event可分红分歧的级别(level),分离追踪纪录分歧水平的有效信息。关于这些分歧的级别,应该注重的是向下兼容的,即高一级的trace信息包括低于此级的一切信息。
?
10046event的追踪级别大抵有:
level1:跟踪sql语句,包含剖析、实行、提取、提交和回滚等。
level4:包含变量的具体信息
level8:包含守候事务
level12:包含绑定变量与守候事务
个中,level1相称于翻开了sql_trace
?
10046event的启用和封闭:
条件前提:(先确保要event的会话情况切合前提)
1、?必需确保timed_statistics为TRUE,这个参数能够在会话级长进行修正。
2、?为了确保trace输入可以完全举行,还要调剂此会话对trace文件巨细的限定,一样平常将此限定作废,行将max_dump_file_size设置为UNLIMITED,大概设置为一个很年夜的阙值。
在满意了上述前提后,就能够启用10046event对会话举行背景跟踪了。
?
这里另有几种体例来启用10046event:
一种是在以后会话启用event,能够使用altersession+事务称号+level,
如:sql>altersessionsetevent‘10046tracenamecontextforever,level12’;
?
别的一种是启用其余会话举行event跟踪,能够使用oracle供应的dbms_system来完成。
如:sql>execdbms_system.set_ev(sid,serial#,10046,12,’’);
?
注重:
sql>execdbms_system.set_sql_trace_in_session(sid,serial#,true);
相称于翻开了sql_trace。
?
event的封闭:
能够在经由过程上面的语句来封闭以后会话的event:
sql>altersessionsetevent‘10046tracenamecontextoff’;
?
也能够使用dbms_system包来封闭某个会话的event:
sql>executedbms_system.set_ev(sid,serial#,0,’’);
?
这里应该值得一提的是,TRACE将损耗相称的体系资本,因而我们在利用TRACE的时分应该稳重。关于正式的体系,应该只在需要的时分举行TRACE操纵,而且应该实时封闭。
?
?
当使用事务trace完以后或某个session后,接上去我们的事情就是找到oracle天生的trace了。Oracle的初始化文件中user_dump_dest参数的设置将决意trace文件的天生地位。
?
从trace文件中查找和发明有效的信息,然后寻觅需要的功能调剂点并举行响应的调剂:
年夜部分情形下,经由过程10046事务trace到文件里的信息包括了此会话中存在的功能成绩,能够依据trace到的守候事务、SQL语句实行情形和绑定变量的利用情形来举行剖析和查找。
?
oracle供应了一个工具tkprof来对trace文件举行格局的翻译,以便trace文件中纪录的信息可以被我们简单把握和猎取。
?
?
小常识:
反省以后会话的sql_trace形态或级别:
SQL>setserveroutputon
2????????declarei_eventnumber;
3????????begin
?3?sys.dbms_system.read_ev(10046,i_event);
?4?dbms_output.put_line(‘thesessionsql_tracelevelis:‘||i_event);
?5?end;
6????????/
thesessionsql_tracelevelis:12
?
PL/SQL历程已乐成完成。
先说DDL的分类。有一类DDL,是不需要重建表的,比如加非聚簇索引。这类操作其实不会丢数据,也是在原表上直接操作,对于我们“以恢复数据为目的”的闪回,是可以先忽略的。另外一类,则是会影响到表数据的操作。 对于微软系列的东西除了一遍遍尝试还真没有太好的办法 其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。 如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。 其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。 但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。 不过话说回来了,绝大多数的性能优化准则与对sqlserver存储的结构理解息息相关 原来公司用过MYSQL自己也只是建个表写个SQL 如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。
页:
[1]