我目前正在制定相關的SCADA應用數據記錄,使用SQL Server 2012 Express中的一個解決方案。 SCADA應用程序被配置爲在SQL Server上執行存儲過程以推送數據庫中的數據。SQL Server Express的維護
數據流IMHO是相當重(1.4 - 每天1.9米行,平均長度爲43個字節,一些調整之後)。存儲數據的表在三列上有一個聚簇索引。現在我們的重點是儘可能緊湊地存儲這些數據,而不會產生太多的碎片(SELECTS現在不是主要的利益)。
目前DB佔地約250 MB(我已經預先分配5120 MB爲DB),並只保存此數據表中另一個表,可以忽略不計,和事務日誌。
我的問題是:
如何可以在這個數據庫我建立索引維護?作爲Express版我不能使用SQL Server代理。我將使用任務計劃程序,但是應該使用重建還是重新組織?建議使用100以下的填充因子?我應該配置任務調度程序以便間隔調用,以便任務只能重新組織(碎片低於30%)?重建日益昂貴的操作(第x天索引是否重建,第x + 1天是否需要更少的時間進行重建,而不是僅在兩天內重建一次),在達到最大存儲空間之後?
同樣具有的SQL Server Express版本限制了數據容量爲10 GB。我試圖儘可能多地擠壓這個數量。我計劃建立一個環形緩衝區 - 我可以建立數據庫,以便以後我在事件得到記錄消息更改數據庫擴展等失敗的存儲過程將使用上最早的值更新爲插入數據的手段(我的擔心是,即使更新將需要一些新的空間,在那一點上,我將不得不積極收縮數據庫)?
我還考慮過使用壓縮的win分區來存儲數據庫的文件,並使用免費的無限數據庫(如MySQL)作爲存儲目的,而SQL Server只作爲前端 - SCADA應用程序必須配置爲SQL Server。這值得考慮嗎?
爲了優化插入我使用一個全局臨時數據庫,它可容納多達1k行(用序列計數)作爲緩衝區的一種形式,然後將數據推送到主表並截斷臨時表。這是否有效?我是否應該考慮效率交易 - 我試圖在存儲過程中開始一個命名事務,如果它不存在,並且如果序列達到1k,則提交tran?增加10k行的閾值是否導致碎片減少?
如果你認爲我不熟悉數據庫,那麼你是對的。 ATM只有一個使用SQL Server SCADA應用,但實際應用中設置冗餘所以在最後一切都將採取兩次的資源(和SCADA應用程序的每個實例都將獲得自己的存儲)。另外我需要提到的是,我不能只升級到SQL Server的高級版本,但我可以自由使用任何一款免費軟件。
你在一個問四個問題。請在一篇文章中提出一個問題。 –