MySQL架構:
采用C/S架構,即客戶端/服務器,客戶端和服務器區分開,通過客戶端發送請求來和服務器互動,
程序:
-
用戶通過開發的應用程式來訪問資料庫(C/S),應用程式通過連接器(connecter)連接到資料庫,
-
連接器包含了各種開發語言的介面,連接完成后MySQL會分配一個執行緒提供服務,執行對應操作的時候就會呼叫MySQL定義好的介面組件來接收請求,
-
把sql陳述句決議完成后,結合當前資料庫狀態來優化對應操作,
mysql利用caches和buffer來提高系統系統性能, -
資料讀出和寫入的時候會通過存盤引擎來選擇資料的相關操作,最后寫入磁盤或記憶體,
目前主流的存盤引擎:
存盤引擎:MySQL管理資料檔案的一種技術,
-
myisam
-
innodb
查看系統當前支持的存盤引擎:show engines;
myisam和innodb的區別:
-
最大支持資料量:myisam>innodb
-
事務:myisam不支持,
-
鎖:innodb支持行級鎖,myisam只支持表鎖(整張表加鎖)
-
MVCC(多版本并發控制):允許多用戶進行訪問(并發),myisam不支持,
-
聚集索引:innodb支持
-
快取:innodb支持
-
外鍵:myisam不支持
myisam和innodb特點:
-
myisam特點:myisam功能簡單,所以資料訪問快
-
innodb:功能豐富,效率沒有myisam高
mysql5.5版本以前使用的是myisam作為默認存盤引擎,5.5以后使用的默認存盤引擎就是innodb了,
myisam和innodb對應的資料庫檔案:
myisam:
- .frm檔案:負責表格式定義
- .MYD檔案:存放表的資料檔案
- .MYI:存放表的索引檔案
innodb:
- .frm:存放表的定義檔案
- idb:存放表的索引和資料檔案
MySQL5.5以前:
早期innodb型別的資料表只有一個frm檔案,而資料檔案只有一個,這個資料檔案存放了innodb型別的所有表的資料,
修改方法: 啟用:innodb_file_per_table=ON (MariaDB 5.5以后版是默認值)
mysql> select @@innodb_file_per_table;
+-------------------------+
| @@innodb_file_per_table |
+-------------------------+
| 1 |
+-------------------------+
1 row in set (0.00 sec)
修改存盤引擎的方法:
方法1:
vim /etc/my.cnf
[mysqld]
default_storage_engine= InnoDB
方法2:
CREATE TABLE tb_name(... ) ENGINE=InnoDB;
ALTER TABLE tb_name ENGINE=InnoDB;
查看指定表的屬性資訊:
-
show table status from tb_name\G
-
show table status like 'tb_name%'
特殊存盤引擎:
-
Performance_Schema:系統自帶的資料庫Performance_Schema使用的存盤引擎
-
Memory:資料存放在記憶體中,主要存放一些臨時資料,information_schema這個系統資料庫就是使用的memory存盤引擎,
系統資料庫:四個
-
mysql:mysql的核心資料庫,主要負責存盤資料庫的用戶、權限設定、關鍵字等mysql自己需要使用的控制和管理資訊
-
Performance_Schema:MySQL 5.5開始新增的資料庫,用于收集資料庫服務器性能引數
-
information_schema:MySQL 5.0之后產生的,一個虛擬資料庫,物理上并不存在information_schema資料庫,存放MySQL的元資料資訊,
-
sys 資料庫:MySQL5.7之后新增加的資料庫,庫中所有資料源來自performance_schema,目標是把performance_schema的把復雜度降低,讓DBA能更好的閱讀這個庫里的內容
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/506166.html
標籤:MySQL
上一篇:MySQL提示sql_mode=only_full_group_by解決辦法
下一篇:弱隔離級別 & 事務并發問題
