日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql数据转储方法_Mysql数据库各种导出导入数据方式的区别(我的理解错误还望指正)...

發布時間:2023/12/4 数据库 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql数据转储方法_Mysql数据库各种导出导入数据方式的区别(我的理解错误还望指正)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

mysqldump,NAVICAT轉儲,select * outfile在千級數據,萬級,百萬級數據下的表現。

千級數據

mysqldump導出sql文件

導出是出了拒絕訪問的錯誤;為對應目錄(.sql文件要保存的目錄)的對應用戶添加(正在使用的用戶)添加寫入權限即可。

mysqldump -h localhost ?-u root -p123456 --database financial_bak --table sx_financial_bak?>d:\dump.sql

注:-p 與密碼間不能有空格,有空格時’123456’會被作為數據庫名解析,并且要求輸入密碼。

可知--database可以省略,--table也可以省略

.sql文件會給出所導出的數據來源,包括數據連接,服務器地址,端口號,導出時間等信息。文件主體有:創建數據庫判斷語句-刪除表-創建表(-鎖表-禁用索引)-插入數據(-啟用索引-解鎖表)。

用時大約為1s!!其中包括兩次時間函數的調用。導出的dump.sql為23k,一共包含1909條insert語句。

2.使用navicat

同樣的表使用navicat的sql導出功能用時約為0.1s

3.使用select* ?outfile的方式

其中使用默認參數對所得數據劃分的方式所花時間為0.0016s,使用自定義劃分方式用時0.0257s,遠遠小于使用mysqldump,以及navicat導出sql的方式。

萬級數據量

對于輕量的表來說結果是outfile的方式用時最少。對于另一個較大的表呢?t_Financial_bak有35007條數據且每條數據有較多數據項

Mysqldump

用時為1.5s。10倍的數據量僅僅多花費了50%的時間,說明在上面的結果1s中時間函數占比較大。

navicat轉儲sql的方式

用時大幅度上漲,由0.1變為了3.6s。轉儲文件由0.1m增加為27m用時的上漲比數據量上漲更快。

3.Select * outfile的方式

可以看到使用默認文件分割方式的outfile語句的時間為0.36,比使用自定義分割方式的0.38少了0.02s可以初步推斷使用自定義分割方式要比默認方式多花0.02秒。但使用select

* outfile的方式依然比使用其他兩種方式導出所花時間少一個數量級。

百萬級數據

對于更大的表有7925794條數據financial的測試結果

Mysqldump

用時187.08s

Navicat轉儲sql

用時750.635s

Outfile

默認分隔符花費時間94.54s

自定義分隔符花費106.41s

對于導出文件差異的分析總結。

導出方式

文件類型

具體內容

時間花費以及評議

Mysqldump

.sql

創建數據庫判斷語句-刪除表-創建表-插入數據。插入方式為一次性插入所有數據,每一行是一個元組。

需要編寫語句,但是隨著數據量增加對navicat

Navicat轉儲sql

整體內容與mysqldump一致,插入實現方式不同,對每一行數據都執行一個insert語句。

最初花費時間很少,操作容易,不需要編寫語句花費額外時間。但隨著數據量的增長很快,適合導出數據量較小的主要功能為對照的表。

outfile

文本文件

導出數據為數據元組的簡單分割。

花費時間最少,但是導出服務器數據時不方便。

對于三種方式的比較:

Mysqldump,navicat轉儲都是將表導出為sql:

優點

導出了表結構,恢復起來更加方便。

導出數據具有很強可讀性,可以很方便的對個別數據進行查找,修改。

Navicat轉儲只需要鼠標點擊即可完成具體到表導出任務,操作非常容易(但花時間也最多!)。

Mysqldump提供很多可選參數可以根據需求使用不同的參數,靈活多變,可以遠程備份文件到本地。

缺點

.sql文件高度結構化,不利于對數據的大規模修改處理。

導出大量數據時,時間比較常,導入時時間更長!

Outfile方式:

優點

導出速度相對快。

導出數據結構化程度低,可以將文件導入到不同的數據庫表中。

導出數據為文本格式,必要時方便對數據進行格式化等修改。

導出時要求沒有同名文件,更加安全。

缺點

導出時要求文件不能同名,但不提供是否覆蓋的選項。(dump方式由shell提供)

導出數據不包括表結構,導入時要求已經有一個表可以存放數據。

三種方式導出文件的導入

Mysqldump導出文件導入source

導入35007條數據花費的時間5s(不知為何source命令后show profiles顯示的是sql中每一個sql的花費時間,占時不知道使用profiles查看source總用時的方法,以下為timestampdiff()的結果,由于mysql版本問題只能精確到秒)

Navicat轉儲sql文件導入

實在沒有耐心等下去了,一共導入; 7675條數據,花費時間275.05s,可見這種方式導出百萬級的表時就幾乎已經是不可用的了。

Outfile導出文件的導入infile

使用默認分割方式導出的文件,導入35007行用時2.67s

使用自定義的數據分割方式,導入35007行用時3.38s

總結:

Mysqldump 在導出導入都有不錯的表現,且隨著數據量的增加,導出導入每條數據所用時間在減少(與其導出.sql文件的結構有關,說明insert語句一次插入多條數據,比執行多天語句每條插入一條數據的效率高的多),而且提供較多的option,可以幫助用戶實現各種需求,在服務器數據備份上由于-h參數也outfile-infile的方式更加方便。

Navicat提供的導出導入方式操作方便,但是隨著數據量的很快變得幾乎不可用。到導出的.sql文件結構化程度最高,易于做文本處理,對于及幾百行,千行的對照表來說不失為一種簡單易行的數據導出方式。

Outfile—infile導出的文件是一個數據元組安一定規則排列的文件,導出的數據文件比同等數據量的.sql文件更小。導出導入花費的時間也更短適合用來保存備份。但是要求恢復數據時表已經存在。

附:不同環境下操作時間的測量(占時沒有找到更好的方法)

windos命令行下:

使用time命令打印時間的方式來實現(中間有調用時間函數的時間,以及io時間,操作用時較少時及其不準):

編寫.bat批處理文件

time

mysql -h localhost -u root -p123456 --database financial_bak

source d:\dump.sql

time

pause

注意pause讓命令行界面滯留。enter.txt是一個自建的只包含一個換行的文件(time會接受一個額外的參數修改時間,需要換行跳過)。

mysql命令行

使用profile

set profiling=1;

source d:\dump.sql;

show profiles;

mysql命令行的timestampdiff()計算時間差的方式

5.6以下版本僅支持到秒級,精度較差

set @d=now();

Source D:\\t_dump.sql;

select timestampdiff(second,@d,now());

注意由于時間算時間差要求三條命令一氣呵成。最后一條命令下有一個空行!

timestampdiff OPTION

FRAC_SECOND。表示間隔是毫秒

SECOND。秒

MINUTE。分鐘

HOUR。小時

DAY。天

WEEK。星期

MONTH。月

QUARTER。季度

YEAR。年

總結

以上是生活随笔為你收集整理的mysql数据转储方法_Mysql数据库各种导出导入数据方式的区别(我的理解错误还望指正)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。