金沙棋牌app手机下载

当前位置:金沙棋牌 > 金沙棋牌app手机下载 > MySql数据备份和恢复,查看语句执行时间

MySql数据备份和恢复,查看语句执行时间

来源:http://www.logblo.com 作者:金沙棋牌 时间:2019-11-05 18:51

参考SQL技术内幕写了一段脚本,可以通过这段脚本查看执行指定SQL语句后,系统生成了哪些执行计划.使用时注意以下几点:

1生成SQL脚本导出数据


在控制台使用mysqldump命令可以用来生成指定数据库的脚本文本,但要注意,脚本文本中只包含数据库的内容,而不会存在创建数据库的语句!所以在恢复数据时,还需要自已手动创建一个数据库之后再去恢复数据。

mysqldump –u用户名–p密码数据库名>生成的脚本文件路径

金沙棋牌app手机下载 1

现在可以在C盘下找到mydb1.sql文件了!

注意,mysqldump命令是在Windows控制台下执行,无需登录mysql!

写程序的人,往往需要分析所写的SQL语句是否已经优化过了,服务器的响应时间有多快,这个时候就需要用到SQL的STATISTICS状态值来查看了。

  1. 修改use MyTest,换成自己的数据库名字.
  2. exec sp_page_test TestTable','*','id',20,100,0,'1=1'替换成要测试的SQL语句
  3. 金沙棋牌app手机下载,该脚本只支持Sql Server 2005及以上版本

2执行SQL脚本恢复数据


前提:必须先创建数据库名

执行SQL脚本需要登录mysql,然后进入指定数据库,才可以执行SQL脚本!!!

执行SQL脚本不只是用来恢复数据库,也可以在平时编写SQL脚本,然后使用执行SQL脚本来操作数据库!大家都知道,在黑屏下编写SQL语句时,就算发现了错误,可能也不能修改了。所以我建议大家使用脚本文件来编写SQL代码,然后执行之!

SOURCE C:mydb1.sql

金沙棋牌app手机下载 2

注意,在执行脚本时需要先行核查当前数据库中的表是否与脚本文件中的语句有冲突!例如在脚本文件中存在create table a的语句,而当前数据库中已经存在了a表,那么就会出错!

还可以通过下面的方式来执行脚本文件:

mysql -uroot

-p123 mydb1

mysql –u用户名–p密码数据库<要执行脚本文件路径

金沙棋牌app手机下载 3

这种方式无需登录mysql!

注意:在CMD下命令不能加;

    通过设置STATISTICS我们可以查看执行SQL时的系统情况。选项有PROFILE,IO ,TIME。介绍如下:

SET STATISTICS PROFILE ON:显示分析、编译和执行查询所需的时间(以毫秒为单位)。
SET STATISTICS IO ON:报告与语句内引用的每个表的扫描数、逻辑读取数(在高速缓存中访问的页数)和物理读取数(访问磁盘的次数)有关的信息。
SET STATISTICS TIME ON:显示每个查询执行后的结果集,代表查询执行的配置文件。

set nocount on;
use MyTest; --这里使用你自己的数据库
dbcc freeproccache;--清空过程缓存
go
--用tempdb..optstats表来捕获所执行SQL语句生成的执行计划信息
if(OBJECT_ID('tempdb..optstats') is not null)
    drop table tempdb..optstats;
go
--这条语句用于创建临时表 tempdb..optstats
select *,0 as run
into tempdb..optstats
from sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle)
go
--该语句的计划将被保存到过程缓存
--这样当下一次执行时不会产生任何优化器事件.
--后面的GO用于确保下次执行这段脚本时
--可以重用insert的计划
go
insert into tempdb..optstats
select *,1 as run
from sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle)
go
--原因同上,只是用"2"替换"1"
--这样我们将得到不同的计划.
go
insert into tempdb..optstats
select *,2 as run
from sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle)
go
--清空临时表
truncate table tempdb..optstats
go
--存储"运行前的"信息,
--保存到临时表,run列的值为"1"
go
insert into tempdb..optstats
select *,1 as run
from sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle)
go
--在这里执行你自己的语句或批处理
--/*** 下面是一个示例
go
exec sp_page_test 'TestTable','*','id',20,100,0,'1=1'
go
--***/
go
--存储"运行后的"信息,
--保存到临时表,RUN列的值为"2"
go
insert into tempdb..optstats
select *,2 as run
from sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle)
go
--从临时表中提取出run1和run2之间
--执行所测试SQL语句后生成的执行计划
select * from tempdb..optstats where bucketid in(
 select tt.bucketid from ( 
    select bucketid,COUNT(*) as cc  from tempdb..optstats  group by bucketid ) tt where  tt.cc=1
)
go 
--删除临时表
Drop table tempdb..optstats;
go
set nocount off

     使用方法:打开SQL SERVER 查询分析器,输入以下语句:

set statistics profile on
set statistics io on
set statistics time on
go
/*--你的SQL脚本开始*/

SELECT * FROM  T_Name

/*--你的SQL脚本结束*/

go
set statistics profile off
set statistics io off
set statistics time off

效果如图所示:

金沙棋牌app手机下载 4

 

另外,也可以通过手工添加语句,计算执行时间来查看执行语句花费了的时间,以判断该条SQL语句的效率如何:

declare @d datetime
set @d=getdate()
/*你的SQL脚本开始*/
SELECT [TestCase] FROM [TestCaseSelect]
/*你的SQL脚本结束*/
select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())

 

本文由金沙棋牌发布于金沙棋牌app手机下载,转载请注明出处:MySql数据备份和恢复,查看语句执行时间

关键词:

上一篇:没有了

下一篇:没有了