標籤:崩潰 讀取 stat 語句 系統 使用者 事務隔離 ODB 使用
MySql通訊架構
1.最上層是各種應用程式的串連資料庫的驅動程式
2.Mysql在串連池中分配一個線程來處理用戶端的串連請求
3.串連的安全合法性驗證
並發串連數不能太大,是整個系統的效能瓶頸
4.SQL Interface sql介面 檢查用戶端發送過來的sql語句是否符合sql文法
5.Parser sql解析器 把驗證過的sql語句進行最佳化同時檢查使用者是否有查詢或者執行許可權
6.Optimlzer sql執行計畫 選擇一條找到資料的最佳路徑
7.返回資料同時緩衝查詢結果
Myql查詢的執行路徑
1.用戶端發送執行查詢sql語句
2.mysql服務端接收到sql語句後首先查詢快取
緩衝是基於hash運算來尋找的,所以要求sql語句的字元要一模一樣
3.如果沒有緩衝 則把sql語句發送到解析器
4.最佳化解析後sql 找到最佳執行路徑
5.執行sql語句 返回查詢結果
MyISAM儲存引擎
不支援事務
表級鎖定
讀寫相互阻塞,寫入不能讀,讀時不能寫
只緩衝索引
不支援外鍵約束
不支援聚簇索引
讀取資料較快,佔用資源較少
不支援MVCC(多版本並發控制機制)高並發
崩潰恢複性較差
MySQL5.5.5前預設的資料庫引擎
適用情境:唯讀(或者寫較少),表較小(可以接受長時間進行修複操作)
MyISAM引擎檔案:
tbl_name.frm: 表格式定義
tbl_name.MYD: 資料檔案
tbl_name.MYI: 索引檔案
InnoDB引擎特點
支援事務,適合處理大量短期事務
行級鎖
讀寫阻塞與交易隔離等級相關
可快取資料和索引
支援聚簇索引
崩潰恢複性更好
支援MVCC高並發
從MySQL5.5後支援全文索引
從MySQL5.5.5開始為預設的資料庫引擎
InnoDB資料庫檔案
所有InnoDB表的資料和索引放置於同一個資料表空間中
資料表空間檔案: datadir定義的目錄下
資料檔案: ibddata1, ibddata2, ...
每個表單獨使用一個資料表空間儲存表的資料和索引
啟用:innodb_file_per_table=ON
兩類檔案放在資料庫獨立目錄中
資料檔案(儲存資料和索引):tb_name.ibd
表格式定義:tb_name.frm
管理儲存引擎
查看mysql支援的儲存引擎:
show engines;
查看當前預設的儲存引擎:
show variables like ‘%storage_engine%‘;
設定預設的儲存引擎:
vim /etc/my.conf
[mysqld]
default_storage_engine= InnoDB;
查看庫中所有表使用的儲存引擎
show table status from db_name;
查看庫中指定表的儲存引擎
show table status like ‘tb_name‘;
show create table tb_name;
設定表的儲存引擎:
CREATE TABLE tb_name(... ) ENGINE=InnoDB;
ALTER TABLE tb_name ENGINE=InnoDB;
Mysql常用的儲存引擎