mysql面試題
區域性性原理
取資料會多取一些資料出來放到記憶體中,通常為一頁,一頁4kb大小。
mysql兩種儲存引擎對比
innodb頁單位,16kb
innodb聚集索引
如果沒有定義主鍵,那麼innodb會判斷有沒有唯一索引,如果存在唯一索引,那麼就會把這個唯一索引當作主鍵,如果連唯一索引都沒有,就會自動生成乙個字段(row_id),自增id。
row_id是乙個隱藏列,只有在select語句時才會被查詢出來。
b+樹:
葉子結點:只存資料
非葉子結點:存主鍵+指標
innodb採用的是聚集索引,索引和資料是在同一份檔案儲存。
create index idx_t1_bcd on t1(b, c, d);
b,c,d為輔助索引,通過對比各索引上的資料的大小進行排序。
先比b的大小,b相等再比c,c相等再比d,以此類推。得到排序後的「序號」,和該序號對應的主鍵索引的值,最後通過回表查詢,獲取主鍵索引對應的真實的資料。
!( style="zoom:33%;" /)
輔助索引,葉子結點儲存資料和主鍵索引的值,再通過回表查詢,查詢主鍵索引查詢真實的資料
通過查詢輔助索引查出來主鍵索引的個數佔主鍵索引總數的80%以上,走全表查詢
正常utf8是0到4個位元組大小
mysql utf8是0到3個位元組大小,有些字元是不支援的,mysql中的utf8mb4是標準的utf8編碼格式
最左字首原則
b,c,d是索引
1,*,*,走索引,1**肯定比644小
*,1,*,不走索引,因為無法判斷*1*和644哪個大哪個小
# 不走索引
select b from t1 group by b,c,d
# 走索引,相當於還是最左字首原則
select b from t1 where b=1 group by b,c,d
acid
原子性隔離性
一致性完整性
mysql事務中有autocommit屬性
隱式提交
update之後,沒有commit,再執行create,alter等ddl操作,會隱式的commit
mysql事務儲存點
四種隔離級別:
版本鏈對於使用innodb儲存引擎的表來說,它的聚簇索引記錄中都包含兩個必要的隱藏列(row_id並不是必要的,我們 建立的表中有主鍵或者非null唯一鍵時都不會包含row_id列):
m_ids:已修改還未提交的事務,會儲存其id至m_ids內,
可重複讀是即使其他事務修改並提交了資料,但是m_ids依然保持不變,仍然認為這些是活躍的事務id。
mvcc(多併發版本控制)
mvcc(multi-version concurrency control ,多版本併發控制)指的就是在使用read committd、 repeatable read這兩種隔離級別的事務在執行普通的seelct操作時訪問記錄的版本鏈的過程。可以使不同 事務的讀-寫、寫-讀操作併發執行,從而提公升系統效能。read committd、repeatable read這兩個隔離級 別的乙個很大不同就是:生成readview的時機不同,read committd在每一次進行普通select操作前都會 生成乙個readview,而repeatable read只在第一次進行普通select操作前生成乙個readview,之後的查 詢操作都重複使用這個readview就好了
間隙加鎖
repeatable read加寫鎖時,其他事務不能對已查出來的相關資料進行插入操作。
mysql相關筆記
接下來的過程,共分為三部分 原始碼安裝 mysql server,配置遠端連線許可權和c 遠端訪問mysql測試。一 原始碼安裝mysql。1 安裝必備包。yum install y gcc gcc c make automake wget 2 原始碼安裝cmake。wget tar zxvf cm...
mysql筆記免費 MYSQL相關完整筆記
useradd mysql s sbin nologin cat etc passwd grep mysql cat etc group grep mysql 源目錄cd usr src mysq cmake dcmake install prefix usr local mysql dmysql ...
MySQL慢查詢日誌相關筆記
mysql優化sql,針對慢sql語句的查詢及相關配置。相關命令 顯示慢查詢sql語句數量 show global status like slow queries 檢視是否開啟慢查詢日誌,並顯示日誌存放位置 show variables like slow query log sql執行時間超過m...