更新時(shí)間:2021-01-12 17:44:08 來源:動力節(jié)點(diǎn) 瀏覽1388次
MySQL作為目前最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,MySQL數(shù)據(jù)庫有著許多的特性,在這些特性之中,有一些光彩奪目的高級特性,為MySQL數(shù)據(jù)庫的強(qiáng)大功能實(shí)現(xiàn)貢獻(xiàn)了不菲的力量,本文我們就來一起看看這11個(gè)MySQL高級特性。
1.分區(qū)表
分區(qū)表是一種粗粒度的、簡易的索引策略,適用于大數(shù)據(jù)量的過濾場景。最適合的場景是,在沒有合適的索引時(shí),對其中幾個(gè)分區(qū)進(jìn)行全表掃描,或者是只有一個(gè)分區(qū)和索引是熱點(diǎn),而且這個(gè)分區(qū)和索引都能夠在內(nèi)存中;限制單表分區(qū)數(shù)不要超過150個(gè),并且注意某些導(dǎo)致無法做分區(qū)過濾的細(xì)節(jié),分區(qū)表對于單條記錄的程序并沒有什么優(yōu)勢,需要注意這類查詢的性能。
2視圖
對好幾個(gè)表的復(fù)雜查詢,使用視圖有時(shí)候會大大簡化問題。當(dāng)視圖使用臨時(shí)表時(shí),無法將WHERE條件下推到各個(gè)具體的表,也不能使用任何索引,需要特別注意這類查詢的性能。如果為了遍歷,使用視圖是很合適的。
3.外鍵約束
外鍵限制會將約束放到MySQL中,這對于必須維護(hù)外鍵的場景,性能會更高。不過這也會帶來額外的復(fù)雜性和額外的索引消耗,還會增加多表之間的交互,會導(dǎo)致系統(tǒng)中有更多的鎖和競爭。外鍵可以被看作是一個(gè)確保系統(tǒng)完整性的額哇的特性,但是如果設(shè)計(jì)的是一個(gè)高性能的系統(tǒng),那么外鍵就會顯得很臃腫了。很多人在更在意系統(tǒng)的性能的時(shí)候都不會使用外鍵,而是通過應(yīng)用程序來維護(hù)。
4.MySQL內(nèi)部存儲代碼
常用的方式有
1)存儲過程和函數(shù)
2)觸發(fā)器
可以在執(zhí)行INSERT、UPDATE或者DELETE的時(shí)候,執(zhí)行一些特定的操作。可以在MySQL中指定是在SQL語句執(zhí)行前觸發(fā)還是在執(zhí)行后觸發(fā)。
3)事件
類似于LINUX的定時(shí)任務(wù),不過完全是在MySQL內(nèi)部實(shí)現(xiàn)。
4)在存儲過程中保留注釋
5.綁定變量
綁定變量的SQL語句:INSERT INTO tbl(col1, col2, col3) VALUES (?, ?, ?);。綁定變量的SQL,使用問號標(biāo)記可以接收參數(shù)的位置,當(dāng)真正需要執(zhí)行具體查詢的時(shí)候,則使用具體值代替這些問號。
6.插件
插件類型:
1)存儲過程插件
2)后臺插件
3)INFORMATION_SCHEMA插件
4)全文解析插件
5)審計(jì)插件
6)認(rèn)證插件
7.字符集和校對
字符集是一種字節(jié)到字符之間的映射,而校對規(guī)則是指一個(gè)字符集的排序方法。很多人都使用Latin1(默認(rèn)字符集,對英語和某些歐洲語言有效)或者UTF-8。如果使用的是UTF-8,那么在使用臨時(shí)表和緩沖區(qū)的時(shí)候需要注意:MySQL會按照每個(gè)字符三個(gè)字節(jié)的最大占用空間來分配存儲空間,這可能消耗更多的內(nèi)存或者磁盤空間。注意讓字符集和MySQL字符集配置相符,否則可能會由于字符集轉(zhuǎn)換讓某些索引無法正常工作。
8.全文索引
全文索引有著自己獨(dú)特的語法,沒有索引也可以工作,如果有索引效率會更高。
全文索引可以支持各種字符內(nèi)容的搜索,也支持自然語言搜索和布爾搜索。
9.分布式(XA)事務(wù)
很少會有人用MySQL的XA事務(wù)特性。除非你真正明白參數(shù)innodb_support_xa的意義,否則不要修改這個(gè)參數(shù)的值,并不是只有顯示使用XA事務(wù)時(shí)才需要設(shè)置這個(gè)參數(shù)。InnoDB和二進(jìn)制日志也是需要使用XA事務(wù)來做協(xié)調(diào)的,從而確保在系統(tǒng)崩潰的時(shí)候,數(shù)據(jù)能夠一致地恢復(fù)。
10.查詢緩存:
完全相同的查詢在重復(fù)執(zhí)行的時(shí)候,查詢緩存可以立即放回結(jié)果,而無須在數(shù)據(jù)庫中重新執(zhí)行一次。根據(jù)經(jīng)驗(yàn),在高并發(fā)壓力環(huán)境中查詢緩存會導(dǎo)致系統(tǒng)性能的下降,甚至僵死。如果一定要使用查詢緩存,那么不要設(shè)置太大內(nèi)存,而且只有在明確收益的時(shí)候才使用。查詢緩存是一個(gè)非常方便的緩存,對應(yīng)用程序完全透明,無須任何額外的編碼,但是如果希望有更高效的查詢緩存,建議使用memacched等其他緩存方案。
11.游標(biāo)
MySQL在服務(wù)器中提供只讀的、單向的游標(biāo),而且只能在存儲過程或者更底層的客戶端API中使用。因?yàn)橛螛?biāo)中指向的對象都是存儲在臨時(shí)表中而不是實(shí)際查詢到的數(shù)據(jù),所以MySQL游標(biāo)總是可讀的。
以上就是關(guān)于11個(gè)mysql高級特性的介紹,這11個(gè)MySQL高級特性一起為MySQL數(shù)據(jù)庫的各個(gè)功能的實(shí)現(xiàn)奠定了基礎(chǔ)。想要深入了解這11個(gè)MySQL數(shù)據(jù)庫高級特性的小伙伴,觀看本站的MySQL教程,對每個(gè)MySQL高級特性都有深入的分析和講解。
初級 202925
初級 203221
初級 202629
初級 203743