none
sql 2008執行匯入匯出後,記憶體不會釋放 RRS feed

  • 問題

  • 我在SQL2008使用匯入匯出精靈,將100多個TABLE,大約20G的資料,
    分別執行了幾次的匯入匯出動作,將資料倒入SERVER A,
    當全部資料匯入完成後,發現SERVER A的記憶體都被SQL的SERVICE佔用,
    (SERVER A的SQL SERVICE平時記憶體約佔2G左右,但做完匯入後佔了30G)
    直到重啟SQL SERVER後記憶體才被釋放,
    想請問各位有沒有什麼樣的設定可以讓SQL執行完匯出匯入功能後自動把記憶體釋放出來,
    謝謝.

    OS: WINDOWS 2008 ENTERPRISE
    SQL: SQL 2008 + SP1

    2012年1月18日 上午 07:01

所有回覆

  • 你的資料量有點大,雖然下面這篇文章的情況跟你不完全相同,或許多少可以參考看看。

    http://fannys23.pixnet.net/blog/post/29336021-%5Bmssql%5D-%E4%BD%BF%E7%94%A8%E5%91%BD%E4%BB%A4%E5%88%97%E6%A8%A1%E5%BC%8F%E5%9F%B7%E8%A1%8C%E5%A4%A7%E9%87%8F-sql-%E8%AA%9E%E6%B3%95,小攻城師的戰場筆記

    先利用資料庫發行精靈將資料轉成T-SQL再搭配sqlcmd匯入資料,看能不能吃比較少的記憶體。

     


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2012年1月18日 上午 07:30
    版主
  • Sql will use all available memory on the server unless you set max memory in it.
    • 已編輯 rmiao 2012年1月18日 下午 01:53
    2012年1月18日 下午 01:52
  • SQL 會根據記憶體的可用大小來決定匯入匯出作業需要cache資料量的大小,並在作業中自動調整記憶體大小。

    基本上,除了OS所需的必要記憶體,其他的盡可分配給SQL Server。

     

    您可以對SQL instance按右鍵,選屬性後,查看Memory部分的設定。在Memory設定中,有最大以及最小值的設定,你可以藉此設定SQL Server 可用之記憶體範圍。

    如果上下限相同(Max = Min),表示你需要SQL Server固定記憶體大小。設定後可以利用Performance Counter觀察 SQL Server的 target memory 以及 total memory

    來確認設定是否生效。

     

    2012年1月18日 下午 03:32