Sql-Server

全文索引填充中的 SQL Server 緩衝池擴展

  • December 16, 2017

我有一台安裝了 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 )

問題是:

  1. 如何查看 SQL Server 的緩衝池使用情況(我想知道是否使用了 BPE)?
  2. BPE 會影響全文索引填充嗎?
  3. 我錯過了任何伺服器或緩衝池配置嗎?

如何查看 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。

引用自:https://dba.stackexchange.com/questions/193293