1:為啥刪除了表的一半數8據,表文檔案大小沒變化?
因為delete 命令其實只是把記錄的位置,或者資料頁標記為了「可復用」,但磁碟檔案的大小是不會變的。也可以認為是一種邏輯刪除,所以物理空間沒有實際釋放,只是標記為可復用,表檔案的大小當然是不變的啦!
2:表的資料資訊存在**?
表資料資訊可能較小也可能巨大無比,她可以儲存在共享表空間裡,也可以單獨儲存在乙個以.ibd為字尾的檔案裡,由引數innodb_file_per_table來控制,老師建議總是作為乙個單獨的檔案來儲存,這樣非常容易管理,並且在不需要的時候,使用drop table命令也能直接把對應的檔案刪除,如果儲存在共享空間之中即使表刪除了空間也不會釋放。
3:表的結構資訊存在**?
首先,表結構定義占有的儲存空間比較小,在mysql8.0之前,表結構的定義資訊存在以.frm為字尾的檔案裡,在mysql8.0之後,則允許把錶結構的定義資訊存在系統資料表之中。
系統資料表,主要用於儲存mysql的系統資料,比如:資料字典、undo log(預設)等檔案
4:如何才能刪除表資料後,表檔案大小就變小?
重建表,消除表因為進行大量的增刪改操作而產生的空洞,使用如下命令:
1:alter table t engine=innodb
2:optimize table t( 等於 recreate+analyze)。
3:truntace table t (等於drop+create)
5:空洞是啥?咋產生的?
空洞就是那些被標記可復用但是還沒被使用的儲存空間。
使用delete命令刪除資料會產生空洞,標記為可復用
插入新的資料可能引起頁**,也可能產生空洞
修改操作,有時是一種先刪後插的動作也可能產生空洞
丁奇mysql實戰 丁奇 MySQL實戰讀書筆記5
在下面這個表 t 中,如果我執行 select from t where k between 3 and 5,需要執行幾次樹的搜尋操作,會掃瞄多少行?mysql create table t id int primary key,k int not null default 0,s varchar ...
丁奇mysql實戰 丁奇 MySQL實戰讀書筆記1
這個專欄的內容是我工作以來看過講mysql最深入而且最細緻的,作者丁奇是前阿里資深技術專家,和褚霸 霸爺 一起研究資料庫7年之久,我覺得很有必要把這個專欄重新讀一下並做好筆記,以求共勉。特別注意由於丁奇在資料庫領域比較資深,所以很多知識他可能認為你至少應該是了解的,如果完全不了解某個知識點,建議先去...
MySql 丁奇 學習筆記 MVCC
問題0 有如下表結構,分析下面三個事務讀到的資料是甚麼?create table t engine innodb insert into t values 1,1 事務a 事務b事務c start transaction with consistent snapshot start transact...