一、MySQL DDL會鎖表不能寫,怎么保證持續讀寫
比較笨的方法通常就是最常用的方法。搞一個臨時表,新數據寫兩份,舊數據分段導入臨時表。舊數據導完的時候用臨時表代替原表。當然已經有成熟的工具了,比如pt-osc和gh-ost。區別就在于新數據雙寫的時候一個是通過觸發器,另一個是通過binlog老實現的。
哪些常用操作“鎖表”:
創建二級索引(二級索引是指除主鍵索引之外的索引)、刪除索引、重命名索引、改變索引類型——不“鎖表”。
添加字段、刪除字段、重命名字段、調整字段順序、設置字段默認值、刪除字段默認值、修改auto-increment值、調整字段允許NULL、調整字段不允許NULL —— 不“鎖表”。
擴展Varchar字段大小——不“鎖表”。
更改字段數據類型,如varchar改成text——“鎖表”。
延伸閱讀:
二、字符集(Character set)是什么
是多個字符(英文字符,漢字字符,或者其他國家語言字符)的集合,字符集種類較多,每個字符集包含的字符個數不同。
特點:
①字符編碼方式是用一個或多個字節表示字符集中的一個字符
②每種字符集都有自己特有的編碼方式,因此同一個字符,在不同字符集的編碼方式下,會產生不同的二進制
常見字符集:
ASCII字符集:基于羅馬字母表的一套字符集,它采用1個字節的低7位表示字符,高位始終為0。
LATIN1字符集:相對于ASCII字符集做了擴展,仍然使用一個字節表示字符,但啟用了高位,擴展了字符集的表示范圍。
GBK字符集:支持中文,字符有一字節編碼和兩字節編碼方式。
UTF8字符集:Unicode字符集的一種,是計算機科學領域里的一項業界標準,支持了所有國家的文字字符,utf8采用1-4個字節表示字符。