mysql的高级特性
生活随笔
收集整理的這篇文章主要介紹了
mysql的高级特性
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1、分區(qū)表 1)分區(qū)表是一個獨立的邏輯表,底層是由多個物理字表組成。實現(xiàn)分區(qū)的代碼實際上是對一組底層表的句柄對象的封裝,對分區(qū)表的請求都會通過句柄對象轉化為對存儲引擎的接口調(diào)用,所以分區(qū)對于SQL層來說是一個完全封裝底層實現(xiàn)的黑盒子,對應用是透明的。 2)Mysql實現(xiàn)分區(qū)后,索引是按照分區(qū)的字表來定義的,沒有全局的索引。 3)注意幾點: - 一個表最多只能由1024個分區(qū); - Mysql5.1中分區(qū)的表達式必須是整數(shù)或者返回值為整數(shù),在Mysql5.5中可以直接使用列來盡心個分區(qū); - 如果分區(qū)字段中由主鍵或者唯一索引的列,那么所有主鍵和唯一索引列都必須包含進來。 - 分區(qū)表中無法使用外鍵約束。 4)第一個分區(qū)是特殊分區(qū),在分區(qū)的表達 PARTITION?BY?RANGE?(to_days(var)) 中var的值為null或者非法值時,記錄都會存放在第一個分區(qū),為了避免第一個分區(qū)太大導致檢索效果很差,一般第一個分區(qū)可以設置PARTITION?BY?RANGE?(to_days(0)),如果var的值都是有效的,第一個分區(qū)就是空,即使無效第一個分區(qū)的數(shù)據(jù)量也會很小。 2、視圖 Mysql 5.0版本后才開始引入視圖。視圖本身是一個虛擬表不存放任何數(shù)據(jù)。在使用SQL語句訪問視圖的時候返回的是Mysql從其他表中生成的,視圖和表是在一個命名空間,不同對視圖創(chuàng)建觸發(fā)器也不能使用DROP TABLE命令刪除視圖。 創(chuàng)建一個視圖: 視圖有兩種實現(xiàn):合并算法和臨時表算法,如果可能會盡可能使用合并算法,只有在視圖中包含GROUP BY、DISTINCT、聚合函數(shù)、UNION、子查詢等,無法在原紀錄和視圖建立一一映射的場景中,Mysql都會使用臨時表來實現(xiàn)視圖,也可以使用EXPLAIN對視圖確定是用哪種實現(xiàn)方法。 這里的select_type為“DERVIED”表明該視圖采用的是臨時表算法實現(xiàn)的。對于使用了臨時表算法的視圖無法更新數(shù)據(jù)的。 下圖是兩種表的實現(xiàn)算法: 3、Mysql內(nèi)部存儲代碼 Mysql允許通過觸發(fā)器、存儲過程和函數(shù)的形式來存儲代碼。從Mysql5.1開始可以在定時任務中存放代碼,這個定時任務也稱為“事件”。 存儲過程: - 每個連接都有獨立的存儲過程的執(zhí)行計劃緩存 - 存儲程序越小越簡單越好,更復雜的邏輯還需要交給上層的應用實現(xiàn)。 - 使用存儲過程對于一些小的查詢或者插入操作優(yōu)勢很明顯,相對于應用層面減少執(zhí)行成本、解析和網(wǎng)絡開銷,所以一般對于測試環(huán)境造大量數(shù)據(jù)可以考慮存儲過程來實現(xiàn)。 ?4、主從數(shù)據(jù)復制 1)mysql支持兩種復制方法:基于行的復制和基于語句的復制。這兩種復制方式都是通過在主庫上記錄二進制日志,在備庫重放日志的方式來實現(xiàn)數(shù)據(jù)異步同步。 2)數(shù)據(jù)復制的步驟: - 主庫上把數(shù)據(jù)更改記錄到二進制日志(Binary Log)中。在每次準備提交事務完成數(shù)據(jù)更新之前,主庫將數(shù)據(jù)更新的事件記錄到二進制日志中。Mysql是按照事務的提交順序而非每條語句的執(zhí)行順序來記錄日志,只有記錄完畢日志后才會提交事務。 - 備庫將主庫上的日志復制到自己的中繼日志(Relay Log)中。備庫會啟動一個I/O線程跟主庫建立連接,然后在主庫上啟動一個特殊的二進制轉儲(binlog dump)線程。這個二進制轉儲線程會讀取主庫上二進制日志中的事件。它不會對事件進行輪詢,如果該線程追上主庫將進入睡眠狀態(tài),直到主庫發(fā)送信號通知有新的事件才會喚醒,備庫I/O線程會將接收到的事件記錄到中繼日志中。 - 備庫的SQL線程執(zhí)行最后一步,該線程從中繼日志讀取事件并在備庫上執(zhí)行,從而實現(xiàn)備庫數(shù)據(jù)的更新。 如下圖所以,在主庫中有一個二進制轉儲線程,從庫中有兩個線程:I/O線程從主庫讀取二進制到中繼日志和SQL執(zhí)行線程。
?
轉載于:https://www.cnblogs.com/kma-3/p/9781796.html
總結
以上是生活随笔為你收集整理的mysql的高级特性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Stock Market(luogu 2
- 下一篇: 《python3网络爬虫开发实战》--基