mysql的概念以及mysql架構(gòu)分析

image.png
  • mysql邏輯結(jié)構(gòu)
    從圖中可以看到MySQL由以下幾個部分組成
    連接池
    管理服務(wù)和工具組件
    SQL接口
    查詢分析器
    優(yōu)化器
    緩存
    插入式存儲引擎
    物理文件
  • 物理結(jié)構(gòu):
    mysql軟件(mysqld)+配置文件+mysql數(shù)據(jù)文件(磁盤上的文件:datadir)

邏輯的架構(gòu):
mysql架構(gòu)

實例(mysqld_process)+memory+datadir

整體結(jié)構(gòu):
物理+邏輯(實例)=mysql
數(shù)據(jù)庫 --理解為磁盤上面的文件
實例 --運行中mysqld+memory

mysql中是一個實例對應(yīng)多個物理庫

存儲引擎

引擎(Engine)是電子平臺上開發(fā)程序或系統(tǒng)的核心組件魁莉。利用引擎,開發(fā)者可迅速建立攒砖、鋪設(shè)程序所需的功能法褥,或利用其輔助程序的運轉(zhuǎn)检吆。一般而言薪捍,引擎是一個程序或一套系統(tǒng)的支持部分币他。常見的程序引擎有游戲引擎尔当、搜索引擎莲祸、殺毒引擎.數(shù)據(jù)庫引擎等。
把游戲的引擎比作賽車的引擎椭迎。引擎是賽車的心臟锐帜,決定著賽車的性能和穩(wěn)定性,賽車的速度畜号、操縱感這些直接與車手相關(guān)的指標(biāo)都是建立在引擎的基礎(chǔ)上的缴阎。游戲也是如此,玩家所體驗到的劇情简软、關(guān)卡蛮拔、美工述暂、音樂、操作等內(nèi)容都是由游戲的引擎直接控制的建炫,它扮演著中場發(fā)動機的角色畦韭,把游戲中的所有元素捆綁在一起,在后臺指揮它們同時肛跌、有序地工作艺配。簡單地說,引擎就是“用于控制所有游戲功能的主程序衍慎,從計算碰撞转唉、物理系統(tǒng)和物體的相對位置,到接受玩家的輸入稳捆,以及按照正確的音量輸出聲音等等赠法。”
存儲引擎就是指表的類型以及表在計算機上的存儲方式眷柔。
mysql存儲引擎有很多但是最常用的肯定是innoDB引擎,從5.5.5開始默認(rèn)的mysql存儲引擎就是InnoDB

  • innoDB存儲引擎簡介
    除了MyISAM外期虾,使用最為廣泛的存儲引擎,由第三方公司開發(fā)驯嘱,和mysql遵守相同的開源許可協(xié)議镶苞。
    支持事務(wù)安全
    數(shù)據(jù)多版本讀取
    鎖定機制的改進(jìn)
    實現(xiàn)外鍵
    它有表空間的概念,但與oracle表空間相比又有較大的不同鞠评,首先茂蚓,innodb的表空間分為兩種形式,一種是共享表空間剃幌,也就是所有數(shù)據(jù)都被存放在同一個表空間(一個或多個數(shù)據(jù)文件)中聋涨,通過innodb_data_file_path來指定,增加數(shù)據(jù)文件須要停機重啟负乡。另外一種是獨享表空間牍白,也就是每個表的數(shù)據(jù)和索引都存放在一個單獨的.ibd文件中。

事務(wù)的4個特性(commit/rollback):

1抖棘、數(shù)據(jù)完整性    事務(wù)完成之后茂腥,它對于數(shù)據(jù)的修改是永久性的,即使出現(xiàn)系統(tǒng)故障也能夠保持
2切省、一致性   在事務(wù)開始和完成時最岗,數(shù)據(jù)都必須保持一致狀態(tài)。這意味著所有相關(guān)的數(shù)據(jù)規(guī)則都必須應(yīng)用于事務(wù)的修改朝捆,以保持?jǐn)?shù)據(jù)的完整性般渡;事務(wù)結(jié)束時,所有的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如B樹索引或雙向鏈表)也都必須是正確的。
3驯用、隔離性    數(shù)據(jù)庫系統(tǒng)提供一定的隔離機制脸秽,保證事務(wù)在不受外部并發(fā)操作影響的“獨立”環(huán)境執(zhí)行。這意味著事務(wù)處理過程中的中間狀態(tài)對外部是不可見的晨汹,反之亦然豹储。
4、原子性   事務(wù)是一個原子操作單元淘这,其對數(shù)據(jù)的修改剥扣,要么全都執(zhí)行,要么全都不執(zhí)行
  • 查看存儲引擎命令
mysql>  show variables like '%storage%';   --查詢當(dāng)前mysql支持的儲存引擎
+----------------+--------+
| Variable_name  | Value  |
+----------------+--------+
| storage_engine | MyISAM |
+----------------+--------+
1 row in set (0.00 sec)
mysql> show engines;                                -查詢當(dāng)前庫中支持存儲引擎
  • 更改默認(rèn)的存儲引擎
# vim /data2/my.cnf                     --靜態(tài)修改
default-storage-engine=innodb
#重啟mysql 
/etc/init.d/mysqld stop
/etc/init.d/mysqld start
  • 測試innodb事務(wù):
    事務(wù)的4個特性(commit/rollback):
    1铝穷、數(shù)據(jù)完整性
    2钠怯、一致性
    3、隔離性
    4曙聂、原子性
innodb與myisam的區(qū)別

mysql> use aaaa;
mysql> create table t1(id int) engine=myisam;   #設(shè)置t1表格為Myisam引擎
mysql> create table t2(id int);
mysql> create table t3(id int);

關(guān)閉自動提交功能
mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+
1 row in set (0.01 sec)
mysql> set session autocommit=off;   #關(guān)閉自動提交功能
Query OK, 0 rows affected (0.00 sec)

mysql> insert into t2 set id=1;
Query OK, 1 row affected (0.00 sec)
事務(wù)有隔離性 晦炊,
mysql> commit;   提交
Query OK, 0 rows affected (0.04 sec)
不提交 看不到
image.png

image.png
  • 回滾


    image.png
  • innodb數(shù)據(jù)存儲的方式


    image.png

    總結(jié):
    在上圖中可以看到數(shù)據(jù)先到buffer_pool(緩存池中)當(dāng)我們commit的時候才會保存到硬盤當(dāng)中,也就是說如果數(shù)據(jù)在保存到磁盤成功之后才算一個事務(wù)完成

  • innodb存儲引擎的配置參數(shù)

innodb存儲引擎的配置參數(shù):
innodb_buffer_pool_size = 2G                        --innodb的數(shù)據(jù)緩沖大小(索引+數(shù)據(jù))宁脊,一般是物理的%50-%80
innodb_max_dirty_pages_pct = 90                 --緩沖區(qū)的臟塊達(dá)到90%寫回磁盤
innodb_flush_log_at_trx_commit = 1              --1時只要commit會強制把事務(wù)日志寫回磁盤断国,0時只要commit把日志寫至操作系統(tǒng)緩沖區(qū),等待操作寫盤榆苞,2時當(dāng)commit延遲1秒寫出回磁盤
innodb_log_buffer_size = 8M                     --事務(wù)日志文件的緩沖大小
innodb_data_file_path = ibdata1:100M:autoextend     --innodb數(shù)據(jù)文件
innodb_log_file_size = 256M                     --日志文件大小
innodb_log_files_in_group = 3                       --有三組日志
innodb_data_home_dir =/abc                      --數(shù)據(jù)文件存儲的根目錄稳衬,不寫路徑默認(rèn)存儲在datadir中
innodb_log_group_home_dir=                      --事務(wù)日志的存儲根目錄
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市坐漏,隨后出現(xiàn)的幾起案子薄疚,更是在濱河造成了極大的恐慌,老刑警劉巖赊琳,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件街夭,死亡現(xiàn)場離奇詭異,居然都是意外死亡躏筏,警方通過查閱死者的電腦和手機板丽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來趁尼,“玉大人檐什,你說我怎么就攤上這事∪蹩ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵住册,是天一觀的道長婶博。 經(jīng)常有香客問我,道長荧飞,這世上最難降的妖魔是什么凡人? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任名党,我火速辦了婚禮,結(jié)果婚禮上挠轴,老公的妹妹穿的比我還像新娘传睹。我一直安慰自己,他們只是感情好岸晦,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布欧啤。 她就那樣靜靜地躺著,像睡著了一般启上。 火紅的嫁衣襯著肌膚如雪邢隧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天冈在,我揣著相機與錄音倒慧,去河邊找鬼。 笑死包券,一個胖子當(dāng)著我的面吹牛纫谅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播溅固,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼付秕,長吁一口氣:“原來是場噩夢啊……” “哼奢赂!你這毒婦竟也來了承边?” 一聲冷哼從身側(cè)響起吻氧,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤颠印,失蹤者是張志新(化名)和其女友劉穎扣甲,沒想到半個月后跳芳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體菊碟,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡缠俺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年苹粟,在試婚紗的時候發(fā)現(xiàn)自己被綠了有滑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡嵌削,死狀恐怖毛好,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情苛秕,我是刑警寧澤肌访,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站艇劫,受9級特大地震影響吼驶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一蟹演、第九天 我趴在偏房一處隱蔽的房頂上張望风钻。 院中可真熱鬧,春花似錦酒请、人聲如沸骡技。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽布朦。三九已至,卻和暖如春苟弛,著一層夾襖步出監(jiān)牢的瞬間喝滞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工膏秫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留右遭,地道東北人。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓缤削,卻偏偏與公主長得像窘哈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子亭敢,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容