仓酷云 发表于 2015-1-16 22:33:53

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,是不需要重建表的,比如加非聚簇索引。这类操作其实不会丢数据,也是在原表上直接操作,对于我们“以恢复数据为目的”的闪回,是可以先忽略的。另外一类,则是会影响到表数据的操作。

冷月葬花魂 发表于 2015-1-19 16:29:45

对于微软系列的东西除了一遍遍尝试还真没有太好的办法

谁可相欹 发表于 2015-1-25 21:37:58

其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。

活着的死人 发表于 2015-2-4 04:21:48

如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。

乐观 发表于 2015-2-9 15:49:36

其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。

变相怪杰 发表于 2015-2-27 09:05:31

但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。

分手快乐 发表于 2015-3-9 00:19:50

不过话说回来了,绝大多数的性能优化准则与对sqlserver存储的结构理解息息相关

小妖女 发表于 2015-3-16 19:20:31

原来公司用过MYSQL自己也只是建个表写个SQL

再现理想 发表于 2015-3-23 00:34:48

如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。
页: [1]
查看完整版本: MSSQL网站制作之10046event 信步