有什么办法在sqlserver启动后,自动把某个数据库加载进内存?

BT_zaz 2017-11-13 12:07:23
数据库文件有7G大,为了提高首次查询的速度,所以希望启动sqlserver服务后就自动把数据库读取进内存。是数据库自带的内存管理读取进内存,而不是指用程序加载数据进内存。
...全文
228 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2017-11-13
  • 打赏
  • 举报
回复
觉得你的方向有点偏。生产环境上的SQL Server 服务不应该经常被启动。 实在想做, 可以用 SqlProfiler 采集一天的脚本(或者用下面的脚本在服务器比较繁忙时执行下,取其中的 SQL_Full)。
SELECT TOP 30 OBJECT_NAME(qt.objectid,qt.dbId) AS procName
	       ,DB_NAME(qt.dbId)      AS		[db_name]
	       ,qt.text               AS		SQL_Full
	       ,SUBSTRING(qt.text, (qs.statement_start_offset/2) + 1,
					((CASE statement_end_offset 
					WHEN -1 THEN DATALENGTH(qt.text)
					ELSE qs.statement_end_offset END 
					- qs.statement_start_offset)/2) + 1) AS SQL_Part	--统计对应的部分语句
	       ,qs.creation_time
	       ,qs.last_execution_time
	       ,qs.execution_count
	       ,qs.last_elapsed_time/1000000   AS  lastElapsedSeconds
	       ,qs.last_worker_time/1000000    AS  lastCpuSeconds
	       ,CAST(qs.total_elapsed_time / 1000000.0 / (CASE when qs.execution_count=0 then -1 else qs.execution_count END) AS DECIMAL(28, 2))  AS avgDurationSeconds
	       ,CAST(qs.last_logical_reads AS BIGINT) * 1.0 / (1024 * 1024) * 8060 AS lastLogicReadsMB
	       ,qs.last_logical_reads
	       ,sys.fn_varbintohexstr(qs.sql_handle)
	       ,sys.fn_varbintohexstr(qs.plan_handle)
	       --,CONVERT(NVARCHAR(MAX), p.query_plan)
	FROM   sys.dm_exec_query_stats qs
	       CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
	       --CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) AS p
	WHERE  qs.last_elapsed_time >= 1000 * 1000
	       AND qt.[text] NOT LIKE '%Proc_DBA%'
	ORDER BY qs.last_worker_time DESC
然后将其中的查询类脚本(insert,update,delete去掉)写成一个存储过程, 在SQL Server加载时执行这个存储过程就好。 http://www.jb51.net/article/16049_all.htm 不过最好的办法, 建议还是用我上面的那个脚本, 找出慢SQL之后进行优化。 慢很多时候是因为缺少索引, 或者语句没有优化。
OwenZeng_DBA 2017-11-13
  • 打赏
  • 举报
回复
有一个办法就是准备一个脚本,在数据库启动的时候运行,运行,select * from table ,帮你进行预加载数据。
OwenZeng_DBA 2017-11-13
  • 打赏
  • 举报
回复
7G的数据库不算大的。你们的数据库会经常重启吗。在执行完了一次之后数据就会加载进内存。
听雨停了 2017-11-13
  • 打赏
  • 举报
回复
还没听说过有这种操作的。期待up一下

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧