Sql-Server

SQL 2008。幫助選擇正確的複制模型

  • May 26, 2011

該數據庫是帶有一些報告的日終數據儲存。

我們每天用特定日期的數據填充數據庫。

有時使用者的報告會阻止導入過程(從 C# 應用程序執行,然後使用 sprocs 在 SQL 端處理數據)。

所以我的想法是將報告與儲存分離到 2 個單獨的數據庫中。

你會同意嗎?

如果那我需要複製。建議是什麼?

我可以在同一個數據中心獲得另一個盒子。數據量約為每天 2Gb。

我不會得到 3d 框,所以 SSRS 應該安裝在“報告”數據庫之上。

花了一些時間來理解這個問題。如果我錯了,請糾正我。

您有一個數據庫,您只為一個數據載入數據,並且使用者要求提供有關此數據的報告。但是在導入過程中(每天只進行一次),報告被阻止了。每天添加的數據量為 2GB。你想優化這個過程。

SELECT @@VERSION 是什麼?我知道您使用的是 2008,但我也需要版本資訊。您是每天追加 2 GB 數據還是截斷並僅載入 2 GB?盒子上有多少記憶體可用?您也可以分享以下查詢中的資訊嗎?

-- Isolate top waits for server instance since last restart or statistics clear
WITH Waits AS
(SELECT wait_type, wait_time_ms / 1000. AS wait_time_s,
100. * wait_time_ms / SUM(wait_time_ms) OVER() AS pct,
ROW_NUMBER() OVER(ORDER BY wait_time_ms DESC) AS rn
FROM sys.dm_os_wait_stats
WHERE wait_type NOT IN ('CLR_SEMAPHORE','LAZYWRITER_SLEEP','RESOURCE_QUEUE','SLEEP_TASK'
,'SLEEP_SYSTEMTASK','SQLTRACE_BUFFER_FLUSH','WAITFOR', 'LOGMGR_QUEUE','CHECKPOINT_QUEUE'
,'REQUEST_FOR_DEADLOCK_SEARCH','XE_TIMER_EVENT','BROKER_TO_FLUSH','BROKER_TASK_STOP','CLR_MANUAL_EVENT'
,'CLR_AUTO_EVENT','DISPATCHER_QUEUE_SEMAPHORE', 'FT_IFTS_SCHEDULER_IDLE_WAIT'
,'XE_DISPATCHER_WAIT', 'XE_DISPATCHER_JOIN', 'SQLTRACE_INCREMENTAL_FLUSH_SLEEP'))
SELECT W1.wait_type, 
CAST(W1.wait_time_s AS DECIMAL(12, 2)) AS wait_time_s,
CAST(W1.pct AS DECIMAL(12, 2)) AS pct,
CAST(SUM(W2.pct) AS DECIMAL(12, 2)) AS running_pct
FROM Waits AS W1
INNER JOIN Waits AS W2
ON W2.rn <= W1.rn
GROUP BY W1.rn, W1.wait_type, W1.wait_time_s, W1.pct
HAVING SUM(W2.pct) - W1.pct < 99 OPTION (RECOMPILE); -- percentage threshold

SQL Server 非常強大,如果使用得當,可以從中獲得很多性能。我們現在沒有足夠的資訊來做出判斷。您可能需要 REPLICATION 或者您可以通過調整性能、添加適當的索引和投入少量記憶體來提高性能。所以請添加更多細節。

引用自:https://serverfault.com/questions/256302