91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎樣解析mysql與oracle 體系結構

發布時間:2021-11-16 11:42:44 來源:億速云 閱讀:217 作者:柒染 欄目:MySQL數據庫

這篇文章給大家介紹怎樣解析mysql與oracle 體系結構,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

做為一個學習oracle的工程師,現在開始學習mysql。

  mysql數據庫和oracle 相比作為一個開源數據庫,從學習的角度來說的話。他不像oracle的教育體系。文檔那么全面

學習oracle最好的方法是看oracle的官方文檔。本人由于英語水平有限。所以看了高性能mysql和深入淺出mysql

看了倆本書都不錯。所有的資料都是教你怎么干活的。對于體系架構等還是有點少。

我個人認為學習數據庫,要先了解數據庫的體系結構和sql的執行過程。經過查詢很多資料。感覺自己應該是明白了

先說oracle 體系結構,oracle的體系結構圖官方都有。網上也有好多講這個東西的。如果不明白可以查找下看一下。oracle的資料市面非常多。
提示:只做了innodb的比較,剩下的存儲引擎為在之中
怎樣解析mysql與oracle 體系結構

   1,數據庫(database):     |—物理存儲:(os操作系統文件):        |— datafile      數據文件(存儲的是實實在在數據的地方)業務數據、系統數據、臨時數據(order by。。)回退數據

                                                |                                                               |—countralfile  控制文件(存儲的是數據庫的結構信息)

                                                |                                                               |—logfile         日志文件(存儲的是改變的數據)做恢復用

                                                |—邏輯存儲: |—表空間(table space)存數據字典的地方

                                                                      |—段(磁盤/io,存儲各種類型的數據的地方)不能跨表空間                                                                         

                                                                      |—區(為段分配空間的)不能跨越段                                                                        

                                                                      |—塊(最小的單位是block)不能跨越區

   2,實例(instance): |—sga:內存cpu: shard pool 共享池:最近使用的sql語句(程序)和最近使用的數據字典的信息

                                        |                         buffer cache  數據庫緩沖區:最近使用的數據,大小由db_cache_size決定

                                        |                         redo log buffer  日志緩沖區:最近改變的數據log buffer。按順序寫,循環寫

                                        |                         java pool

                                        |                         large pool

                                        |—后臺進程: |—數據庫寫進程dbwr:把數據由數據庫緩沖區寫入數據文件里

                                                              |—日志寫進程lgwr:把數據由日志緩沖區寫入日志文件里

                                                              |—檢查點進程ckpt:1,數據庫同步的標志。三大核心文件必須保證在同一檢查點上,數據庫才能起來,最先寫在日志文件里,寫在數據文件的頭里

                                                              |                           2,觸發數據庫寫進程,把數據由數據庫緩沖區寫入數據文件里

                                                              |—系統監控進程smon:1,歷程恢復

                                                              |                               2,釋放臨時段的空間

                                                              |                               3,合并相鄰的空間碎片

                                                              |—程序監控進程pmon:釋放資源(包括正常和異常資源)

                                                              |  MMON監視進程每到指定時間去訪問統計數據,這樣就知道表空間使用量到警告或邊界沒有

怎樣解析mysql與oracle 體系結構

下面看一下mysql的結構圖
怎樣解析mysql與oracle 體系結構


對于mysql來說他是線程模式。所以對應的上面oracle進程

master thread 主要負責將臟緩存頁刷新到數據文件,執行purge操作,觸發檢查點,合并插入緩沖區

insert buffer thread 負責插入緩沖區的合并操作

read thread 負責數據庫 讀讀操作,可配置多個讀線程

write theead 負責數據庫 讀寫操作,可配置多個寫線程

log theead 用于數據庫的重做日志刷新到logfile 中

purage theead   mysql5.5之后單獨的purage theead  執行purge操作 

事務被提交后,其所使用的undolog可能不再需要,因此需要PurgeThread來回收已經使用并分配的undo頁。在InnoDB 1.1版本之前,purge操作僅在InnoDB存儲引擎的Master Thread中完成。而從InnoDB 1.1版本開始,purge操作可以獨立到單獨的線程中進行,以此來減輕Master Thread的工作,從而提高CPU的使用率以及提升存儲引擎的性能。用戶可以在MySQL數據庫的配置文件中添加如下命令來啟用獨立的Purge Thread:

look thread 負責鎖控制和死鎖檢測等

錯誤檢測線程: 主要負責錯誤監控和錯誤處理

write theead master thread 相當于 dbwr 
數據庫寫進程dbwr:把數據由數據庫緩沖區寫入數據文件里
master thread 主要負責將臟緩存頁刷新到數據文件,執行purge操作,觸發檢查點,合并插入緩沖區
write theead 負責數據庫 讀寫操作,可配置多個寫線程

insert buffer thread 類似于  smon

系統監控進程smon:

1,歷程恢復     

2,釋放臨時段的空間    

3,合并相鄰的空間碎片
insert buffer thread 負責插入緩沖區的合并操作

log theead  
日志寫進程lgwr:把數據由日志緩沖區寫入日志文件里
log theead 用于數據庫的重做日志刷新到logfile 中

上述基本是我總結的mysql和oracle的instace中進程線程的結構

現在分析mysql的內存結構

共享池
shard pool 共享池:最近使用的sql語句(程序)和最近使用的數據字典的信息
QueryCache(下面簡稱QC)是根據SQL語句來cache的。一個SQL查詢如果以select開頭,那么MySQL服務器將嘗試對其使用QC。每個Cache都是以SQL文本作為key來存的。在應用QC之前,SQL文本不會被作任何處理
mysql的QC 很簡陋啊只要數據進行更改就會清除qc里的數據。原來我非常不理解的東西。現在明白了。不過深入解析沒有看

buffer cache 和innodb buffer cache
存儲數據的地方。mysql 是在innodb層處理這個問題。

      buffer cache  數據庫緩沖區:最近使用的數據,大小由db_cache_size決定redo log buffer 和innodb redo log buffer              

寫入數據庫時候先寫入redo log buffer  順序寫入內存,刷新到硬盤,順序寫。最后通過寫進程刷新到datafile里面
保證寫入的io。
綜上所述:mysql 和mysql innodb的別也就上述幾點基本差不多。只是mysql簡陋了好多。
學習mysql是可以更好的了解數據庫。

關于怎樣解析mysql與oracle 體系結構就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吉林省| 临夏市| 新野县| 宾川县| 青龙| 延安市| 太白县| 晴隆县| 富民县| 福安市| 永定县| 甘洛县| 溧水县| 东丽区| 中山市| 越西县| 定西市| 迁西县| 启东市| 龙山县| 白水县| 高州市| 黄石市| 邹平县| 邹城市| 昂仁县| 吉木乃县| 中超| 科技| 通渭县| 沅江市| 合山市| 临邑县| 延吉市| 旬阳县| 珠海市| 高台县| 枝江市| 清镇市| 游戏| 江西省|