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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

diskgenius 数据迁移_活见鬼,明明删除了数据,空间却没减少! - *IT界农民工*

發布時間:2025/3/11 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 diskgenius 数据迁移_活见鬼,明明删除了数据,空间却没减少! - *IT界农民工* 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

遷移數據常用

1、導出文件 -?mysqldump 命令?

?mysqldump?是 Mysql 自帶的邏輯備份工具。其備份原理是通過協議連接到 Mysql 數據庫,將需要備份的數據查詢出來轉換成對應的?insert?語句。當需要還原這些數據時,只要執行這些 insert 語句,即可將對應的數據還原。?

常用命令:

mysqldump?-uroot?-p123456?--all-databases??>/tmp/all.sqlmysqldump -uroot -p123456 --databases db >/tmp/db.sqlmysqldump?-uroot?-p123456?--databases??db??--tables?a?>/tmp/a.sqlmysqldump?-uroot?-p123456?--databases?db?--tables?a?--where='id=1'?>/tmp/a.sqlmysqldump -uroot -p123456 --no-data --databases db >/tmp/db.sql

2、導入文件 - source 命令

source?命令可以將導出的 sql 文件導入進指定數據庫。

操作步驟:

  • use 數據庫;

  • soucre 已導出的 sql 文件。

遷移思路

1. 數據庫A歷史數據遷移到 hdfs(一種分布式文件系統)上進行歸檔;

2. 刪除數據庫A已歸檔的表,使用 drop 命令;

3. 數據庫A上新建表,用于數據庫B遷移;

4. 數據庫B中除未完成單外都遷移至數據庫A;

5. 腳本進行刪除數據庫B上已遷移數據。?

阿丁開講

1、參數介紹

在 Innodb 存儲引擎中,innodb_file_per_table 參數是用來控制表數據的存儲方式的。

當參數為 OFF 的時候,所有數據都存放于默認路徑下名為 ibdata* 的共享表空間里,即將數據庫所有的表數據及索引文件存放到一個文件中。在刪除數據表的時候,ibdata*?文件不會自動收縮。

當參數為 ON 的時候,每一個表都將存儲在一個以 .ibd 為后綴的文件中。這樣每個表都有了自己獨立的表空間,通過 drop table 命令就可以將表空間進行回收。?

從 Mysql 5.6.6?版本開始,innodb_file_per_table?默認為 ON 狀態。

2、參數設置

通過 show variables like '%per_table%' 命令,可以查看 innodb_file_per_table 參數的當前狀態:

如果想修改參數的狀態,可通過 SET GLOBAL 動態地修改為 ON 或 OFF,也可以在 中做永久性修改。需要注意的是,在 中修改后生效的話需要重啟 mysqld 服務。?

疑問:如果之前參數為 OFF 狀態,設置為 ON 狀態后,表空間如何分配?

答案是僅對后續操作生效。

什么意思呢?修改前的數據還維持原狀,也就是說之前的數據繼續存放于 ibdata* 文件中,修改后的使用獨立表空間。?

所以建議在開始就將該參數設置為 ON 狀態。

第二天

?

阿丁二次開講

在這之前要先介紹下 Innodb 存儲數據所用的 B+ 樹結構,畫個圖你理解下:

在圖中,P 代表一頁數據,R 代表一行數據。

假設我們要刪掉 R2 這條記錄,InnoDB 引擎只會將其標記為刪除狀態,并不會真正把這行數據所占的空間釋放掉,也就是說這個坑位還留著。如果后續所插入的數據在 R1 與 R3 之間的話,這個空間是可以被使用上的。

假設我們恰好刪除了 R1、R2、R3 這三條記錄,也就是說 P1 這一頁的數據都被刪掉了,那么 P1 所在的空間都會被標記為可復用。如果插入的數據需要使用新頁的話,P1 的坑位就可以被利用起來了。?

那么你可能會問了,我插入的數據恰好巧妙的避開了這些位置呢。那我還能說啥,騷唄。這樣會造成很多空間被浪費,如果刪除大量的數據的話,被浪費的空間也會是巨大的。

optimize table 的本質是 ALTER TABLE xxx ENGINE = InnoDB;

在版本之前,重建表的過程是這樣的:

然后用臨時文件替換舊表,這樣便實現了表的重建。

注意

1、控制遷移速度,防止主從延遲導致線上故障;

2、創建大表時,使用下面的建表語句可節省 50% 左右的空間:

ROW_FORMAT=COMPRESSED?KEY_BLOCK_SIZE=8

3、使用 optimize table 壓縮表時,需要留夠一定的空間。

關于作者

作者:大家好,我是萊烏,BAT搬磚工一枚。從小公司進入大廠,一路走來收獲良多,想將這些經驗分享給有需要的人,因此創建了公眾號「IT界農民工」。定時更新,希望能幫助到你。

總結

以上是生活随笔為你收集整理的diskgenius 数据迁移_活见鬼,明明删除了数据,空间却没减少! - *IT界农民工*的全部內容,希望文章能夠幫你解決所遇到的問題。

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