當前位置:首頁 » 數據倉庫 » 資料庫還原速度很慢
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

資料庫還原速度很慢

發布時間: 2022-07-08 06:06:09

❶ oracle還原資料庫長時間不動

一般是網路不好,更換網路再試一下。
根據oracle資料庫的特點和提供的工具,還原數據主要方法有以下幾種方法。
1、利用邏輯備份使用import工具丟失數據的表;2、利用物理備份來通過還原數據文件並進行不完全恢復;3、利用dbms_logmnr包從redo log文件中恢復;4、利用flashback特性恢復數據。

❷ 用 Navicat 還原 Mysql 資料庫奇慢

mysql -uuser -ppassword dbname < c:\\dbname.sql 這樣試一下

❸ 資料庫還原緩慢

你先把原來的那個資料庫分離掉,把MDF和LDF文件移到其它文件夾,然後創建個新的同名空資料庫,然後再強制還原,另外還原時請不要退出遠程登錄,要等完成後才退出。

❹ mysql還原資料庫 怎麼最快

經過分析發現,還源速度慢的主要原因是因為這類工具在執行 SQL 文件的時候,總是把每一條SQL以一個事務的方式去執行。所以面對幾千萬的數據,就需要執行幾千萬次的 SQL 語句,效率更加可想而知。於是想到了 OBDB2DB 這一個資料庫轉換工具,通過這一個工具把 MySQL 的數據導出為本地 SQLite 資料庫,帶回來後再將 SQLite 轉換為 MySQL 資料庫。由於 OBDB2DB 在進行數據轉換時採用了批量處理的方式,所以轉換速度相比原來的方式大大提高。

❺ SQL Server如何提高資料庫還原的速度

影響資料庫還原速度的因素和影響資料庫備份速度的因素相同。除此之外,假如你使用SQL Server 2005的話,你還可以啟動另外一個優化任務來還原當前不存在的資料庫,運行環境為Windows XP,Windows 2003 Server 或更新版本。
Perform Volume Maintenance Tasks
當你還原一個新的完整資料庫是,SQL Server讀備份文件頭,然後創建原始資料庫中數據和日誌文件需要的磁碟空間。假如SQL Server服務啟動帳戶沒有「Perform Volume Maintenance Tasks」許可權的話,數據和日誌文件就需要被初始化為0,也就是說,SQL Server先創建這些文件,然後用0來填充它們。對於一個大資料庫來說,這將花費很多時間。我記得使用SQL Server 2000從磁帶上還原一個320GB的資料庫時,總是奇怪為什麼總是有30分鍾的時間,還原進程一點稱進展都沒有。
然後,假如SQL Server服務啟動帳戶有「Perform Volume Maintenance Tasks」許可權的話,它就會根據大小來創建數據文件,跳過「填充0」這個階段。
下圖使用secpol.msc來顯示許可權

你可以設想一下它會節省你多少還原大型資料庫的時間。注意,事務日誌文件仍然需要「填充0」,僅僅是數據文件可以跳過這一步。
注意:當然使用新許可權時,要啟動SQL Server服務來使之生效
下面是一個還原20GB數據和5GB事務日誌所消耗時間的對照表
還原消耗時間
未使用」Perform Volume Maintenance Tasks」 5:05
使用「Perform Volume Maintenance Tasks」 1:01
消耗1:01時間是因為SQL Server仍然要把事務日誌文件進行「填充0」操作,未使用」Perform Volume Maintenance Tasks」的情況下,SQL Server需要把數據文件和事務日誌都進行「填充0」的操作,所以還原時間顯示變長了。
你可以用下面這個腳本來快速確定當前是否使用了PVMT(Perform Volume Maintenance Tasks)。
CREATE DATABASE test_InstantInit ON
PRIMARY (name = 'test_InstantInit', filename = 'k:/temp/test_InstantInit.mdf', size = 1GB)
LOG ON (name = 'test_InstantInit_log', filename = 'k:/temp/test_InstantInit.ldf', size = 1MB)
DROP DATABASE test_InstantInit
整個腳本如果在幾秒內完成就證明使用了PVMT。
這里還有一點需要說明的地方。當SQL Server跳過「填充0」階段空間時,如果數據文件所佔用的空間裡麵包括以前的數據,那麼使用DBCC PAGE命令或是其他16進制編輯器就可以看到未被數據頁占據的空間內容。這就是說,如果一個包括敏感重要內容的數據雖然已經被刪除了,但是如果新資料庫佔用了這片空間,那麼敏感數據就有可能被部分泄露出來。
注意:當PVMT處於活動狀態時,那麼新建資料庫,新建數據文件,數據文件增長等情況都會使用它。詳情請看Database File Initialization [SQL2005]
綜上所述,那麼我從備份文件還原一個資料庫之前是否要刪除這個資料庫呢?
下面的表格顯示了還原同一個數據不同操作的效果:
還原時間
還原1GB資料庫 0:40
還原2GB資料庫 1:08
還原1GB資料庫,當前有個同名的2GB資料庫存在 0:29
還原2GB資料庫,當前有個同名的1GB資料庫存在 0:56
結果顯示,假如你執行一個完整資料庫恢復且覆蓋已經存在的同名資料庫,那麼恢復速度會快於直接恢復(表中行1與行3,或行2與行4的對比)。這看起來好像是因為沒有對已經存在的數據文件執行「填充0」操作而節省了時間。不過這也僅僅局限於你恢復的資料庫有同名的文件。如果你使用MOVE選項來重定位資料庫文件,那麼無論你事先是否已經刪除資料庫,這都不再有什麼區別了。
還原狀態同樣影響還原速度
另外一個影響還原速度的因素就是你所選擇的還原後的資料庫的狀態,前提是recovery沒有被選中。通常出於為以後升級做准備的需求,當你選擇不完全恢復資料庫時,有兩個選項可以使用NORECOVERY或是STANDBY。NORECOVERY使資料庫處於「恢復中」模式,允許你進行後續的升級,而且此時資料庫是不可讀狀態。STANDBY也使資料庫處於「恢復中」狀態,允許你進行後續升級,但是此時資料庫可讀。
當你使用STANDBY選項時,你要為回滾文件提供一個名字。這個文件包括從未提示的事務中回滾操作結果。你的未提交事務越多,這個文件越大,那麼隨後還原時間越長。
下面的例子中有4個事務日誌,每個大約131MB左右。除了第三個事務日誌外,所有的備份都僅包括提交的事務,第三個事務日誌包括32MB未提交事務,結果如下圖:
使用NORECOVERY選項還原事務日誌:

使用STANDBY選項還原事務日誌:

總體來說,與NORECOVERY相比使用STANDBY還原事務日誌會慢一些。因為當有未提交的事務時,SQL Server會花費額外的時間來創建回滾文件(undo file)。
還有說明的是,如果你要還原多個事務日誌而且你想讓資料庫處於只讀模式,那麼你應該先使用NORECOVERY選項來還原事務日誌,然後當所有日誌都恢復完成後,你可以把資料庫切換到STANDBY的只讀模式,如下:
RESTORE DATABASE mydb WITH STANDBY = 'g:/data/mydb/mydb_und.dat'
使用這個方法,你僅僅創建了回滾文件一次,避免了還原多個事務日誌時創建多次回滾文件的過程,加速了恢復過程。

❻ 我備份了個資料庫文件book.sql,文件有5.5G,但我想恢復的時候,執行速度速度太慢,求快速的執行方法。

只能換配置高的電腦了,強CPU,最好固態硬碟,還原速度自然會很快。

❼ 如何有效地提高 MySQL 的備份和恢復速度

你好,
一 加速備份
1、 加了single-transaction參數 備份時 需要先flush table with read lock 這個過程中會有一個鎖表的過程,如果有事務或語句正在執行,沒有結束,那麼備份進程會一直等待,並且阻塞別的事務,那麼也會影響業務。所以要先確認備份的時候沒有大的事務在運行。具體 single-transaction的加鎖可以參考 我的博客:mysqlmp備份時加single-transaction會不會加鎖2 、mysqlmp是單進程的,沒有辦法並行,但現在機器的瓶頸多是出現在IO方面,可以使用更了的IO設備加快速度3 、mysqlmp時如果空間夠的話,不要邊壓縮邊備份二 加速恢復
1 關閉binlog:不寫入Binlog會大大的加快數據導入的速度2 innodb_flush_log_at_trx_commit=0
3 更好的配置
建議:
如果非要使用邏輯備份,可以考慮mysqlmper, mysqlpump(5.7)這兩個工具去備份,這兩個在備份的時候支持並行操作,mysqlmper還可以對單表進行恢復,在只需要恢復單表的情況下,恢復速度會大大加快使用物理備份 xtrabackup (open source),MEB(oracle提供,收費): 他們的備份原理是基於mysql crash recover, 備份速度 是和邏輯備份的相差不太大。但是恢復速度卻有很大的提升。
邏輯備份 備出來的是sql語句文件,恢復時需要一條一條的執行sql,所以恢復很慢。
而物理備份和還原的速度 相當於直接文件,所以恢復的時候性能有很大的提升並且這兩個軟體還支持並行,效果更好。
邏輯備份最大的優點是 備份好的文件經壓縮後佔用空間較小,最大缺點恢復太慢物理備份可以很快的恢復,但是備份好的文件壓縮後佔用空間比邏輯備份要大

❽ mysql資料庫突然變慢 資料庫變慢是什麼原因

MySQL 在崩潰恢復時,會遍歷打開所有 ibd 文件的 header page 驗證數據字典的准確性,如果 MySQL 中包含了大量表,這個校驗過程就會比較耗時。 MySQL 下崩潰恢復確實和表數量有關,表總數越大,崩潰恢復時間越長。另外磁碟 IOPS 也會影響崩潰恢復時間,像這里開發庫的 HDD IOPS 較低,因此面對大量的表空間,校驗速度就非常緩慢。另外一個發現,MySQL 8 下正常啟用時居然也會進行表空間校驗,而故障恢復時則會額外再進行一次表空間校驗,等於校驗了 2 遍。不過 MySQL 8.0 里多了一個特性,即表數量超過 5W 時,會啟用多線程掃描,加快表空間校驗過程。
如何跳過校驗MySQL 5.7 下有方法可以跳過崩潰恢復時的表空間校驗過程嘛?查閱了資料,方法主要有兩種:
1. 配置 innodb_force_recovery可以使 srv_force_recovery != 0 ,那麼 validate = false,即可以跳過表空間校驗。實際測試的時候設置 innodb_force_recovery =1,也就是強制恢復跳過壞頁,就可以跳過校驗,然後重啟就是正常啟動了。通過這種臨時方式可以避免崩潰恢復後非常耗時的表空間校驗過程,快速啟動 MySQL,個人目前暫時未發現有什麼隱患。2. 使用共享表空間替代獨立表空間這樣就不需要打開 N 個 ibd 文件了,只需要打開一個 ibdata 文件即可,大大節省了校驗時間。自從聽了姜老師講過使用共享表空間替代獨立表空間解決 drop 大表時性能抖動的原理後,感覺共享表空間在很多業務環境下,反而更有優勢。
臨時冒出另外一種解決想法,即用 GDB 調試崩潰恢復,通過臨時修改 validate 變數值讓 MySQL 跳過表空間驗證過程,然後讓 MySQL 正常關閉,重新啟動就可以正常啟動了。但是實際測試發現,如果以 debug 模式運行,確實可以臨時修改 validate 變數,跳過表空間驗證過程,但是 debug 模式下代碼運行效率大打折扣,反而耗時更長。而以非 debug 模式運行,則無法修改 validate 變數,想法破滅。

❾ 求助,用 Navicat 還原 Mysql 資料庫奇慢

二、打開Navicat---連接---Mysql 三、填寫資料庫連接信息 四、導出資料庫文件雙擊打開創建的連接---選擇您的資料庫---右鍵點擊---選擇"轉儲SQL文件",即可將資料庫導入成.sql文件五、 導入資料庫文件 1)雙擊打開創建的連接---選擇您的資料庫---右鍵點擊---選擇"運行SQL文件"2)選擇您的資料庫備份文件以及備份文件的編碼,默認選擇的編碼為65001 (UTF-8)。如果導入失敗,可以刪除失敗的表,嘗試選擇936( Simplified Chinese GBK ) 再次導入 3)如果進度條顯示完成,並且沒有提示錯誤,則成功導入。