Sql-Server
全文索引填充中的 SQL Server 緩衝池擴展
我有一台安裝了 32GB RAM 和 SQL Server 2014 Enterprise 的伺服器。我想嘗試緩衝池擴展 (BPE) 對全文填充的影響。
我創建了一個表並用虛擬資訊填充它,直到它達到 100GB 的大小。
首先,我嘗試在 BPE 之前填充全文索引。花了3個小時。然後,我嘗試使用在分配了 120GB 記憶體的 140GB SSD 上配置的 BPE 填充全文索引。奇怪的是全文索引的數量並沒有變得更快。
我使用以下查詢在 SSD 上創建 BPE,然後重新啟動實例:
alter server configuration set buffer pool extension on ( filename = 'Z:\Cache.bpe' , size = 120gb )
問題是:
- 如何查看 SQL Server 的緩衝池使用情況(我想知道是否使用了 BPE)?
- BPE 會影響全文索引填充嗎?
- 我錯過了任何伺服器或緩衝池配置嗎?
如何查看 SQL Server 的緩衝池使用情況(我想知道是否使用了 BPE)?
可以查詢sys.dm_os_buffer_descriptors
一個例子是這樣的:
SELECT CONVERT(NUMERIC(38, 2), COUNT(*) * 8 / 1024.0) AS cached_data_mb, CONVERT(NUMERIC(38, 2), SUM(CONVERT(BIGINT, free_space_in_bytes)) / 1024. / 1024.) AS free_mb, CASE database_id WHEN 32767 THEN 'ResourceDb' ELSE DB_NAME(database_id) END AS database_name FROM sys.dm_os_buffer_descriptors GROUP BY DB_NAME(database_id), database_id ORDER BY cached_data_mb DESC;
我錯過了任何伺服器或緩衝池配置嗎?
從文件中看不是這樣。沒有很多選擇。
BPE 會影響全文索引填充嗎?
將兩個功能一起使用,而沒有很多人單獨使用,您將處於明顯的劣勢。您可能需要在這裡進行自己的實驗。
需要注意的一件事是 BPE 活動是單執行緒的,每個 I/O 僅限於單個 8K 頁面。這可能會使它們對全文無效。
我寧願在伺服器中放置適量的 RAM。