《mysql的概念以及mysql架構分析》要點:
本文介紹了mysql的概念以及mysql架構分析,希望對您有用。如果有疑問,可以聯系我們。
mysql是目前最流行的關系型數據庫管理系統,在WEB應用方面MySQL是最好的RDBMS(Relational Database Management System:關系數據庫管理系統)應用軟件之一.在給大家分享之前,先介紹下 小編組織的一個學習交流企鵝群:526929231 有什么不懂的問題,都可以在群里問,學習氣氛很好,眾多大神都很熱情.群文件里面也有各種全面的python材料,以及自動化運維學習材料,是一個非常適合學習的地方,小編期待大家的加入,大家一起學習,共同成長!
從圖中可以看到MySQL由以下幾個部分組成:
連接池
管理服務和工具組件
SQL接口
查詢闡發器
優化器
緩存
插入式存儲引擎
物理文件
mysql軟件(mysqld)+配置文件+mysql數據文件(磁盤上的文件:datadir)
邏輯的架構:
mysql架構
實例(mysqld_process)+memory+datadir
整體布局:
物理+邏輯(實例)=mysql
數據庫 --理解為磁盤上面的文件
實例 --運行中mysqld+memory
mysql中是一個實例對應多個物理庫
存儲引擎便是指表的類型以及表在計算機上的存儲方式.
mysql存儲引擎有很多但是最常用的肯定是innoDB引擎,從5.5.5開始默認的mysql存儲引擎便是InnoDB
innoDB存儲引擎簡介
除了MyISAM外,使用最為廣泛的存儲引擎,由第三方公司開發,和mysql遵守相同的開源許可協議.
支持事務平安
數據多版本讀取
鎖定機制的改進
實現外鍵
它有表空間的概念,但與oracle表空間相比又有較大的不同,首先,innodb的表空間分為兩種形式,一種是共享表空間,也便是所有數據都被存放在同一個表空間(一個或多個數據文件)中,通過innodb_data_file_path來指定,增加數據文件須要停機重啟.另外一種是獨享表空間,也便是每個表的數據和索引都存放在一個單獨的.ibd文件中.
事務的4個特性(commit/rollback):
1、數據完整性 事務完成之后,它對于數據的修改是永久性的,即使出現系統故障也能夠堅持2、一致性 在事務開始和完成時,數據都必須堅持一致狀態.這意味著所有相關的數據規則都必須應用于事務的修改,以堅持數據的完整性;事務結束時,所有的內部數據結構(如B樹索引或雙向鏈表)也都必須是正確的.3、隔離性 數據庫系統提供一定的隔離機制,保證事務在不受外部并發操作影響的“獨立”環境執行.這意味著事務處理過程中的中間狀態對外部是不可見的,反之亦然.4、原子性 事務是一個原子操作單元,其對數據的修改,要么全都執行,要么全都不執行
查看存儲引擎命令
mysql> show variables like '%storage%'; --查詢當前mysql支持的儲存引擎+----------------+--------+| Variable_name | Value |+----------------+--------+| storage_engine | MyISAM |+----------------+--------+1 row in set (0.00 sec)mysql> show engines; -查詢當前庫中支持存儲引擎
變動默認的存儲引擎
# vim /data2/my.cnf --靜態修改default-storage-engine=innodb#重啟mysql/etc/init.d/mysqld stop/etc/init.d/mysqld start
測試innodb事務:
事務的4個特性(commit/rollback):
1、數據完整性
2、一致性
3、隔離性
4、原子性
innodb與myisam的區別mysql> use aaaa;mysql> create table t1(id int) engine=myisam; #設置t1表格為Myisam引擎mysql> create table t2(id int);mysql> create table t3(id int);關閉自動提交功能mysql> show variables like 'autocommit';+---------------+-------+| Variable_name | Value |+---------------+-------+| autocommit | ON |+---------------+-------+1 row in set (0.01 sec)mysql> set session autocommit=off; #關閉自動提交功能Query OK, 0 rows affected (0.00 sec)mysql> insert into t2 set id=1;Query OK, 1 row affected (0.00 sec)事務有隔離性 ,mysql> commit; 提交Query OK, 0 rows affected (0.04 sec)不提交 看不到
回滾
innodb數據存儲的方式
在上圖中可以看到數據先到buffer_pool(緩存池中)當我們commit的時候才會保留到硬盤當中,也就是說如果數據在保留到磁盤成功之后才算一個事務完成
innodb存儲引擎的配置參數
innodb存儲引擎的配置參數:innodb_buffer_pool_size = 2G --innodb的數據緩沖大小(索引+數據),一般是物理的%50-%80innodb_max_dirty_pages_pct = 90 --緩沖區的臟塊到達90%寫回磁盤innodb_flush_log_at_trx_commit = 1 --1時只要commit會強制把事務日志寫回磁盤,0時只要commit把日志寫至操作系統緩沖區,等待操作寫盤,2時當commit延遲1秒寫出回磁盤innodb_log_buffer_size = 8M --事務日志文件的緩沖大小innodb_data_file_path = ibdata1:100M:autoextend --innodb數據文件innodb_log_file_size = 256M --日志文件大小innodb_log_files_in_group = 3 --有三組日志innodb_data_home_dir =/abc --數據文件存儲的根目錄,不寫路徑默認存儲在datadir中innodb_log_group_home_dir= --事務日志的存儲根目錄
歡迎參與《mysql的概念以及mysql架構分析》討論,分享您的想法,維易PHP學院為您提供專業教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/7086.html