av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

如何將SQL Server表駐留內(nèi)存和檢測

瀏覽:163日期:2023-10-30 12:43:09

將SQL Server數(shù)據(jù)表駐留內(nèi)存是SQL Server提供的一項功能,在一般小型系統(tǒng)的開發(fā)過程中估計很少會涉及到。這里整理了相關(guān)文檔資料,演示如何把SQL Server中一個表的所有數(shù)據(jù)都放入內(nèi)存中,實現(xiàn)內(nèi)存數(shù)據(jù)庫,提高實時性。

1, DBCC PINTABLE

Marks a table to be pinned, which means Microsoft SQL Server does not flush the pages for the table from memory.

SyntaxDBCC PINTABLE ( database_id , table_id )

To determine the database ID, use the DB_ID function.

To determine the table ID, use the OBJECT_ID function.

注釋

DBCC PINTABLE 不會導致將表讀入到內(nèi)存中。當表中的頁由普通的 Transact-SQL 語句讀入到高速緩存中時,這些頁將標記為內(nèi)存駐留頁。當 SQL Server 需要空間以讀入新頁時,不會清空內(nèi)存駐留頁。SQL Server 仍然記錄對頁的更新,并且如有必要,將更新的頁寫回到磁盤。然而,在使用 DBCC UNPINTABLE 語句使該表不駐留之前,SQL Server 在高速緩存中一直保存可用頁的復本。

DBCC PINTABLE 最適用于將小的、經(jīng)常引用的表保存在內(nèi)存中。將小表的頁一次性讀入到內(nèi)存中,將來對其數(shù)據(jù)的所有引用都不需要從磁盤讀入。

注意; DBCC PINTABLE 可以提供性能改進,但是使用時務(wù)必小心。如果駐留大表,則該表在開始時會使用一大部分高速緩存,而不為系統(tǒng)中的其它表保留足夠的高速緩存。如果所駐留的表比高速緩存大,則該表會填滿整個高速緩存。sysadmin 固定服務(wù)器角色的某個成員必須關(guān)閉而后重新啟動 SQL Server,然后使表不駐留。駐留太多的表和駐留比高速緩存大的表會產(chǎn)生同樣的問題。

示例:

Declare @db_id int, @tbl_id int

Use DATABASE_NAME

Set @db_id = DB_ID('DATABASE_NAME')

Set @tbl_id = Object_ID('Department')

DBCC pintable (@db_id, @tbl_id)

可將表Department設(shè)置為駐留內(nèi)存。

Declare @db_id int, @tbl_id int

Use DATABASE_NAME

Set @db_id = DB_ID('DATABASE_NAME')

Set @tbl_id = Object_ID('Department')

DBCC UNpintable (@db_id, @tbl_id)

可將表Department取消設(shè)置為駐留內(nèi)存。

可以使用如下的SQL指令來檢測執(zhí)行情況:

Select ObjectProperty(Object_ID('Department'),'TableIsPinned')

如果返回結(jié)果為1:則表示該表已經(jīng)設(shè)置為駐留內(nèi)存;0:則表示沒有設(shè)置為駐留內(nèi)存。

2, SP_TableOption

Sets option values for user-defined tables. sp_tableoption may be used to turn on the text in row feature on tables with text, ntext, or image columns.

Syntaxsp_tableoption [ @TableNamePattern = ] 'table' , [ @OptionName = ] 'option_name' , [ @OptionValue = ] 'value'

其中,'option_name' 有如下用法:

pintable; -- When disabled (the default), it marks the table as no longer RAM-resident. When enabled, marks the table as RAM-resident. (可將指定的表駐留內(nèi)存)

另外,table lock on bulk load, insert row lock, text in row等等可選值,因不涉及將表駐留內(nèi)存,具體用法可以查詢SQL Server Books Online.

Value有如下用法:

the option_name is enabled (true, on, or 1) or disabled (false, off, or 0)

示例:

EXEC sp_tableoption 'Department','pintable', 'true'

將數(shù)據(jù)表Department駐留內(nèi)存

EXEC sp_tableoption 'Department','pintable', 'false'

取消數(shù)據(jù)表Department駐留內(nèi)存

可以使用如下的SQL指令來檢測執(zhí)行情況:

Select ObjectProperty(Object_ID('Department'),'TableIsPinned')

如果返回結(jié)果為1:則表示該表已經(jīng)設(shè)置為駐留內(nèi)存;0:則表示沒有設(shè)置為駐留內(nèi)存。

3. Conclusions

將數(shù)據(jù)表設(shè)置為駐留內(nèi)存時,并沒有實際將表讀入內(nèi)存中,直到該表從被檢索。因此,可以使用如下SQL指令進一步將數(shù)據(jù)表Department駐留內(nèi)存:

Select * From Department

另外,可以使用如下SQL指令方便顯示/檢測數(shù)據(jù)庫Database中所有設(shè)置為駐留內(nèi)存的表:

SELECT * FROM INFORMATION_SCHEMA.Tables

WHERE TABLE_TYPE = 'BASE TABLE'

AND OBJECTPROPERTY(object_id(TABLE_NAME), 'TableIsPinned') > 0

主站蜘蛛池模板: aaa级片 | 在线日韩视频 | 国产女人18毛片18精品 | 日本中文字幕在线播放 | 精品小视频 | 国产激情一区二区三区 | 国产综合久久久 | 天天做天天干 | 精品视频久久 | 欧美一级黄色片 | 免费成人深夜夜行网站 | 国产精品二区一区二区aⅴ污介绍 | 欧美日韩小视频 | 国产精品96 | 黄视频在线播放 | 久插视频| 国产视频一区在线观看 | 91免费福利视频 | a在线免费观看 | av在线免费观看网址 | 麻豆视频国产 | www.youjizz.com日本 | 日韩国产欧美 | 久久久久久网 | 天天综合精品 | 欧美久久久 | 亚洲三级黄色片 | 中文字幕一区二区三区视频 | 黄色高潮视频 | 国产一级二级 | 国产一区在线视频 | 九九热精品在线 | 欧美日韩综合在线 | 欧美日韩成人 | 午夜福利毛片 | 日本视频免费观看 | 久久av片 | 欧美日韩亚洲视频 | 日韩在线观看中文字幕 | 日韩高清精品免费观看 | 一级片aa |