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