如何將SQL Server表駐留內(nèi)存和檢測(cè)
來(lái)源:易賢網(wǎng) 閱讀:855 次 日期:2015-02-12 13:37:33
溫馨提示:易賢網(wǎng)小編為您整理了“如何將SQL Server表駐留內(nèi)存和檢測(cè)”,方便廣大網(wǎng)友查閱!

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

1, DBCC PINTABLE

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

Syntax

DBCC 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 不會(huì)導(dǎo)致將表讀入到內(nèi)存中。當(dāng)表中的頁(yè)由普通的 Transact-SQL 語(yǔ)句讀入到高速緩存中時(shí),這些頁(yè)將標(biāo)記為內(nèi)存駐留頁(yè)。當(dāng) SQL Server 需要空間以讀入新頁(yè)時(shí),不會(huì)清空內(nèi)存駐留頁(yè)。SQL Server 仍然記錄對(duì)頁(yè)的更新,并且如有必要,將更新的頁(yè)寫(xiě)回到磁盤(pán)。然而,在使用 DBCC UNPINTABLE 語(yǔ)句使該表不駐留之前,SQL Server 在高速緩存中一直保存可用頁(yè)的復(fù)本。

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

注意 DBCC PINTABLE 可以提供性能改進(jìn),但是使用時(shí)務(wù)必小心。如果駐留大表,則該表在開(kāi)始時(shí)會(huì)使用一大部分高速緩存,而不為系統(tǒng)中的其它表保留足夠的高速緩存。如果所駐留的表比高速緩存大,則該表會(huì)填滿整個(gè)高速緩存。sysadmin 固定服務(wù)器角色的某個(gè)成員必須關(guān)閉而后重新啟動(dòng) SQL Server,然后使表不駐留。駐留太多的表和駐留比高速緩存大的表會(huì)產(chǎn)生同樣的問(wè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指令來(lái)檢測(cè)執(zhí)行情況:

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

如果返回結(jié)果為1:則表示該表已經(jīng)設(shè)置為駐留內(nèi)存;0:則表示沒(méi)有設(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.

Syntax

sp_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)存,具體用法可以查詢(xún)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指令來(lái)檢測(cè)執(zhí)行情況:

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

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

3. Conclusions

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

Select * From Department

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

SELECT * FROM INFORMATION_SCHEMA.Tables

WHERE TABLE_TYPE = 'BASE TABLE'

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

更多信息請(qǐng)查看IT技術(shù)專(zhuān)欄

更多信息請(qǐng)查看數(shù)據(jù)庫(kù)
易賢網(wǎng)手機(jī)網(wǎng)站地址:如何將SQL Server表駐留內(nèi)存和檢測(cè)
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢(xún)回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢(xún)?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽(tīng)報(bào)名

  • 報(bào)班類(lèi)型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢(xún) | 簡(jiǎn)要咨詢(xún)須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專(zhuān)用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢(xún)關(guān)注公眾號(hào):hfpxwx
咨詢(xún)QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專(zhuān)用圖標(biāo)