1:本文档主要介绍与SQL调整有关的内容,内容涉及多个方面:SQL语句执行的过程、ORACLE优化器,表之间的关联,如何得到SQL执行计划,如何分析执行计划等内容,从而由浅到深的方式了解SQL优化的过程,使大家逐步步入SQL调整之门,然后你将发现……。
2:如果5条都要插入的话就要用到游标了。
declare cursor table3_cursor is
select tet from table3;
maxid table2。ID%type;
begin
select ID into maxid from table2;
insert into table1 (id,name) values (22,maxid);
for idx in table3_cursor loop --idx可以看作是从游标中取出的值,这里就可--以看作是txt,循环取出table3中的txt
insert into table2(id,content,Date)
values(maxid,idx。
txt,sysdate);
end loop;
end;
3:当你创建一个FEDERATED表的时候,服务器在数据库目录创建一个表定义文件。文件由表的名字开始,并有一个。frm扩展名。无其它表被创建,因为实际的数据在一个远程数据库上。
这不同于为本地表工作的存储引擎的方式。
对于本地的数据录表,数据文件是本地的。例如,如果你创建一个名为user的MyISAM表,MyISAM处理器创建一个名为users。MYD的数据文件。对本地表读,插入,删除和更新在本地数据文件里的数据的处理器和记录被以对处理器的特定格式存储。
为了读记录,处理器必须把数据分解进列。为了写记录,列值必须被转换到被处理器使用的行格式并且被写进本地的数据文件。
使用MySQL FEDERATED存储引擎,没有对表的本地数据文件(比如,没有。MYD文件)。取而代之地,一个远程数据库存储那些正常地应该在表中的数据。
这使得MySQL客户端API来读,删除,更新和插入数据的使用成为必要。数据取回被通过SELECT * FROMtbl_nameSQL语句来初始化。要读这个结果,通过使用mysql_fetch_row() C API函数,行被一次取一个,然后从SELECT结果包中的列转换成FEDERATED处理器期望的格式。
基本流程如下:
1。 SQL调用被本地发布
2。 MySQL处理器API (数据以处理器格式)
3。 MySQL客户端API (数据被转换成SQL调用)
4。 远程数据库 -> MySQL客户端API
5。
转换结果包(如果有的话)到处理器格式
6。 处理器 API -> 结果行或受行影响的对本地的计数
4:关于系统数据库的恢复总结如下:
在SQL Server数据库中,系统信息存储在系统数据库中,主要的系统数据库包括:
master-从整体上控制用户数据库和SQL Server操作,在创建了任何用户定义的对象后,都要备份它
model-为新数据库提供模版和原型
msdb-包含了有关作业、报警及操作员等信息如果包含系统数据库的介质变了,那么必须重建系统数据库,如果你仍然可以启动SQL Server服务,则可以通过RESTORE语句从系统数据库的备份中恢复数据库。
如果master坏了,不能启动系统,可以按照下面步骤进行恢复
1。重建系统数据库 运行c:\mssql7\binn\rebuildm。exe,按照提示进行即可,
过程中需要系统数据库样本的路径,可在安装光盘中找到;
2 重建系统数据库后,启动SQL Server服务,用系统数据库的备份恢复数据库
就行了通常恢复顺序为master->msdb->model
在恢复master的备份时要注意:必须在单用户(single user)模式下进行
a。
进入单用户模式的方法:
1。在命令行模式下输入sqlservr -c -f -m或者输入sqlservr -m
其中:-c 可以缩短启动时间,SQL Server 不作为Windows NT的服务启动
-f 用最小配置启动SQL Server
-m 单用户模式启动SQL Server
2。
可以在控制面板-服务-MSSQLServer的启动参数中输入-c -f -m或者输入-m,点击开始
3。进行master数据库的恢复
a。直接进入查询分析器,有个提示不要理会它
输入恢复语句进行数据库恢复:
RESTORE DATABASE master from disk='c:\具体的备份文件名'
b。
或者用这个,在命令提示符下输入,注意大小写
使用"windows身份验证"的,输入:isql /E
使用"sql server和windows身份验证"的,输入:isql /U"用户名" /P"密码"
然后在出现的提示符下输入(注意1>,2>是提示符):
1>RESTORE DATABASE master from disk='c:\具体的备份文件名'
2>go
Top
3 楼progress99(如履薄冰) 回复于 2004-04-05 21:44:42 得分 50
--查询分析器中执行下面的语句:
/*
关闭用户打开的进程处理
*/
use master
go
if exists (select * from sobjects where id = object_id(N'[dbo]。
[p_killspid]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo]。[p_killspid]
GO
create proc p_killspid
@dbname varchar(200) --要关闭进程的数据库名
as
declare @sql nvarchar(500)
declare @spid nvarchar(20)
declare #tb cursor for
select spid=cast(spid as varchar(20)) from master。
。sysprocesses where dbid=db_id(@dbname)
open #tb
fetch next from #tb into @spid
while @@fetch_status=0
begin
exec('kill '+@spid)
fetch next from #tb into @spid
end
close #tb
deallocate #tb
go
--用法
exec p_killspid 'test '
go
RESTORE DATABASE test FROM DISK='C:\\My Documents\\111。
db' WITH NORECOVERY
5:一个页面从请求开始到用户完整的看到所有内容,这是一个很复杂的过程,仅仅是针对数据库访问而言,它可能需要访问好几个表,执行很多个SQL语句才 能出来结果。那么我怎么才能知道在所执行的这些SQL语句里面哪个效率最差、最慢对页面的速度影响最大呢? 找出这些执行效率差的SQL语句便是优化的第一步,今天介绍一个基于p6spy的可视化SQL语句执行监控工具——IronTrackSQL。
全部