数据库是一天结束的数据存储与一些报告。
我们每天都用数据填写微粒数据。
用户的报告不时会阻塞导入进程(从C#应用程序运行,然后用sprocs处理SQL端的数据)。
所以我的想法是将报告从存储分成两个单独的数据库。
你同意吗?
如果我需要复制。 这个build议是什么?
我可以在同一个数据中心获得另一个盒子。 数据量约为2Gb一天。
我不会得到3d框,所以SSRS应该安装在“报告”数据库的顶部。
花了一些时间来了解这个问题。 纠正我,如果我错了。
您有一个数据库,您只能为一个数据加载数据,并且用户要求提供有关此数据的报告。 但在导入过程中(每天只做一次),报告被阻止。 每天添加的数据量是2GB。 而且你想优化这个过程。
什么是SELECT @@ VERSION? 我知道你正在使用2008年,但我也需要版本信息。 您是否每天追加2 GB的数据或截断并仅载入2GB? 盒子上有多less内存? 你可以分享下面的查询信息吗?
-- 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 Serverfunction非常强大,使用正确的话可以从中获得很多性能。 我们现在没有足够的信息来作出判断。 您可能需要REPLICATION,或者您可能只是通过调整性能,添加适当的索引并丢弃less量内存来提高性能。 所以请添加更多的细节。
如果您只想使用该数据库进行报告,则应考虑使用只读模式进行login。