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