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