MySQL 刪除時做了什麼

2021-09-20 18:39:12 字數 688 閱讀 9737

1.delete操作會生成插入相同記錄的記錄復用和page復用

2.delete會產生page空洞,隨機insert也會產生page空洞(頁**),索引update分解為delete和insert也會產生空洞

3.重建表可以使資料在page上更緊湊

4.alter table tb_name engine=innodb 在非online ddl 時server層生成臨時表且mdl寫鎖,阻塞其他會話dml操作,鎖阻塞時間久。在online ddl時,時innodb引擎操作步驟:

a.掃瞄表頁,獲取表的dml讀鎖;

b.將表頁複製到乙個臨時檔案,以b+樹格式儲存;

c.在掃瞄和複製page的過程生成row.log日誌記錄ddl複製過程的dml操作;

d.將row.log操作日誌應用到臨時檔案;

e.獲取dml的寫鎖,臨時檔案與表檔案替換

5.ddl online時,innodb表加全文索引時,會阻塞dml操作,其實效果與非online ddl一樣的。ddl online一定是inplace;inplace 的ddl不一定是online,例如:新增fulltext索引和spatial索引

6.optimize table 重建表及索引,收集統計資訊

alter table tb engine=innodb 重建表其實也收集統計資訊

analyze table tb 重新收集統計資訊

變數改變時PHP核心做了些什麼?

引言 內容來自於 extending and embedding php chaper 3 memory management,加上自己的理解,對php中變數的引用計數 寫時複製,寫時改變,寫時複製和改變做個 翻譯 zval 看下面的內容之前先對zval這個結構體做個了解 typedef struc...

CoCreateInstance 做了什麼 菜菜的

cocreateinstance 在裡面會完成 cogetclassobject 得到類廠物件 然後呼叫pclassfactory createinstance 建立乙個物件得到iunknown 而 cogetclassobject 則 查詢登錄檔 clsid x得到元件dll的位置,檔名 裝入dl...

你到底做了什麼

從1月份 一直到現在,有沒有人問過自己,你到底做過了什麼,又做成了什麼。已經有4個月沒有碰過所謂的課本,一直也提不起學習的興趣,不過我做事一般不會後悔,我沒有學習,雖然這並不對,但是起碼我並沒有浪費自己的時間,我去玩也好,我睡覺也好,我度過了別人所沒有的生活,我也交往了新的朋友,新的老師,雖然與許多...