SQL 2008.帮助选择正确的复制模型

SQL 2008.帮助选择正确的复制模型

该数据库是每日结束时的数据存储,并带有一些报告。

我们每天用特定日期的数据填充数据库。

有时用户报告会阻止导入过程(从 C# 应用程序运行,然后使用 sprocs 在 SQL 端处理数据)。

因此我的想法是将报告与存储分成两个独立的数据库。

你同意吗?

如果我需要复制。有什么建议吗?

我可以在同一个数据中心再买一个盒子。每天的数据量大约是 2Gb。

我不会得到 3d 盒子,所以 SSRS 应该安装在“报告”数据库的顶部。

答案1

花了些时间才搞明白这个问题。如果我错了,请纠正我。

您有一个数据库,您只为一个数据加载数据,用户要求提供有关此数据的报告。但在导入过程中(每天只进行一次),报告被阻止。每天添加的数据量为 2GB。您想优化此过程。

SELECT @@VERSION 是什么?我知道您使用的是 2008,但我还需要版本信息。您每天附加 2 GB 的数据还是截断并仅加载 2GB?机器上有多少可用内存?您也可以分享以下查询中的信息。

-- 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 非常强大,如果使用得当,可以获得很高的性能。我们现在没有足够的信息来做出判断。您可能需要复制,或者您可能只需通过调整性能、添加适当的索引和减少内存即可提高性能。所以请添加更多详细信息。

答案2

如果您只想使用该数据库进行报告,那么您应该考虑使用只读模式的日志记录。

相关内容