乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      1. MySQL體系結(jié)構(gòu)和存儲(chǔ)引擎——MySQL體系結(jié)構(gòu)、存儲(chǔ)引擎、連接MySQL

       路人甲Java 2022-04-01

      一、MySQL體系結(jié)構(gòu)和存儲(chǔ)引擎

      盡管各個(gè)平臺(tái)在底層(如線程)實(shí)現(xiàn)方面都各不相同,但MySQL基本上能保證在各個(gè)平臺(tái)上的物理結(jié)構(gòu)的一致性。因此,用戶應(yīng)該能很好的理解MySQL數(shù)據(jù)庫在所有這些平臺(tái)是如何運(yùn)作的。

      1.1 定義數(shù)據(jù)庫和實(shí)例

      數(shù)據(jù)庫:物理操作系統(tǒng)文件或其他形式文件類型的集合。在MySQL數(shù)據(jù)庫中,數(shù)據(jù)庫文件可以是frm、myd、myi、ibd文件。NDB引擎,是存放于內(nèi)存之中的文件,但定義不變。

      實(shí)例:MySQL數(shù)據(jù)庫由后臺(tái)線程以及一個(gè)共享內(nèi)存區(qū)組成。共享內(nèi)存可以被運(yùn)行的后臺(tái)線程所共享。在集群情況下,可能存在一個(gè)數(shù)據(jù)庫被多個(gè)數(shù)據(jù)實(shí)例使用的情況。

      從概念上來講,數(shù)據(jù)庫是文件的集合,是按照某種數(shù)據(jù)模型組織起來并存放于二級(jí)存儲(chǔ)器中的數(shù)據(jù)集合。

      數(shù)據(jù)庫實(shí)例是程序,是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,用戶對(duì)數(shù)據(jù)庫數(shù)據(jù)的任何操作,包括數(shù)據(jù)庫定義、數(shù)據(jù)查詢、數(shù)據(jù)維護(hù)、數(shù)據(jù)庫運(yùn)行控制等都是在數(shù)據(jù)庫實(shí)例下進(jìn)行的,應(yīng)用程序只有通過數(shù)據(jù)庫實(shí)例才能和數(shù)據(jù)庫打交道。

       

      MySQL 是一個(gè)單進(jìn)程多線程架構(gòu)的數(shù)據(jù)庫。

      MySQL 數(shù)據(jù)庫是按照 /etc/my.cnf -> /etc/myssql/my.cnf -> /usr/local/mysql/etc/my.cnf -> ~/.my.cnf 的順序讀取配置文件的。

      如果幾個(gè)配置文件中有相同的參數(shù),MySQL數(shù)據(jù)庫以最后讀取到的一個(gè)配置文件中的參數(shù)為準(zhǔn)。

      1.2 MySQL 體系結(jié)構(gòu)

       

       由圖可知,MySQL由以下幾部分組成:

      • 連接池組件
      • 管理服務(wù)和工具組件
      • SQL接口組件
      • 查詢分析器組件
      • 優(yōu)化器組件
      • 緩沖(Cache)組件
      • 插件式存儲(chǔ)引擎
      • 物理文件

      MySQL區(qū)別于其他數(shù)據(jù)庫的最重要的一個(gè)特點(diǎn)就是插件式的表存儲(chǔ)引擎,注意,存儲(chǔ)引擎是基于表的。

      1.3 MySQL存儲(chǔ)引擎

      1.3.1 InnoDB 存儲(chǔ)引擎

        其設(shè)計(jì)目標(biāo)主要是面向在線事務(wù)處理(OLTP)的應(yīng)用。其特點(diǎn)是支持事務(wù)、行鎖設(shè)計(jì)、支持外鍵、非鎖定讀(MVCC,即默認(rèn)讀取操作不會(huì)產(chǎn)生鎖)。在MySQL5.5.8以后,InnoDB是默認(rèn)的存儲(chǔ)引擎。

        InnoDB通過使用多版本并發(fā)控制(MVCC)來獲得高并發(fā),并實(shí)現(xiàn)了四種隔離級(jí)別,默認(rèn)是 REPEATABLE級(jí)別

        使用next-key locking 的策略來避免幻讀現(xiàn)象

        提供了插入緩沖(insert buffer)、二次寫(double write)、自適應(yīng)哈希索引(adaptive hash index)、預(yù)讀(read ahead)等高性能和高可用的功能

        對(duì)表中的數(shù)據(jù)采用聚集(clustered)方式,因此每張表都是按照主鍵的順序進(jìn)行存放,如果沒有在表定義中指定主鍵,InnoDB存儲(chǔ)引擎將會(huì)為每一行生成一個(gè)6字節(jié)的ROWID,并以此作為主鍵。

      1.3.2 MyISAM存儲(chǔ)引擎

        不支持事務(wù)、表鎖設(shè)計(jì)、支持全文索引,主要面向OLAP應(yīng)用

        MySQL 5.5.8 之前的默認(rèn)存儲(chǔ)引擎

        緩沖池只緩存索引文件,不緩存數(shù)據(jù)文件。數(shù)據(jù)文件由操作系統(tǒng)本身來完成

      1.3.3 NDB 存儲(chǔ)引擎數(shù)據(jù)

        省略

       

      1.5 鏈接 MySQL

      連接 MySQL操作是一個(gè)連接進(jìn)程和MySQL數(shù)據(jù)庫實(shí)例進(jìn)行通信。從程序設(shè)計(jì)的角度的來看,本質(zhì)是進(jìn)程通信。常見的進(jìn)程通信方式有

      管道、命名管道、命名字、TCP/IP套接字、UNIX域套接字。

      1.5.1 TCP/IP 通信

      這種方式在 TCP/IP 連接上建立一個(gè)基于網(wǎng)絡(luò)的連接請求,一般情況下,客戶端在一臺(tái)服務(wù)器,而MySQL實(shí)例(服務(wù)端)在另一臺(tái)服務(wù)器,機(jī)器之間通過 TCP/IP 進(jìn)行網(wǎng)絡(luò)連接。

       在通過TCP/IP 連接到MySQL 實(shí)例時(shí),MySQL 數(shù)據(jù)庫會(huì)先檢查一張權(quán)限視圖,用來判斷發(fā)起請求的客戶端是否允許連接到MySQL實(shí)例。

      1.5.2 命名管道和共享內(nèi)存

      如果兩個(gè)需要進(jìn)程通信的進(jìn)程在同一個(gè)服務(wù)器上,那么可以使用命名管道。MySQL 4.1 之后,還提供了共享內(nèi)存的連接方式。

      1.5.3 UNIX 域套接字

      在Linux 和 UNIX環(huán)境下,還可以使用UNIX 域套接字。UNIX 套接在不是一個(gè)協(xié)議,所以只能在 MySQL 客戶端和數(shù)據(jù)庫實(shí)例在同一臺(tái)服務(wù)器上的情況下使用。

      問題:當(dāng)表的數(shù)據(jù)量大于1000萬時(shí),MySQL性能會(huì)急劇下降嗎?

      隨著行數(shù)的增加,性能會(huì)有所下降,但并不是線性下降,如果用戶選擇了正確的存儲(chǔ)引擎,正確的配置,再多的數(shù)據(jù)量MySQL也能承受。如官方手冊提及的,在InnoDB存儲(chǔ)超過1TB的數(shù)據(jù),處理插入、更新的操作平均 800次/秒。

       

       

       

       

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請遵守用戶 評(píng)論公約

        類似文章 更多