mysql 學習筆記 09

2021-09-25 01:39:22 字數 1055 閱讀 4086

普通索引找到之後 還會繼續向下遍歷到不等於條件

唯一索引找到直接退出。

由於是按頁讀取的,所以遍歷代價很小。

如果更新時,資料也在記憶體中就直接更新,如果不在,則在不影響資料一致性的前提下,將更新操作快取在change buffer,這樣就不需要從磁碟讀取。在下次查詢這個資料頁的時候,然後再執行change buffer的操作。

change buffer會被寫入到磁碟。

執行change buffer得到最新結果的過程稱為merge,訪問這個資料頁會meger,也有後台執行緒定期merge,資料庫正常關閉也會merge。

change buffer記錄的越多 收益就越大,查詢操作會訪問這個資料頁,就會觸發merge。反而***了。

所以對寫多讀少的業務,收益最大。

和redo log

redo log 主要節省的是隨機寫磁碟的 io 消耗**成順序寫),而 change buffer 主要節省的則是隨機讀磁碟的 io 消耗。

analyze table t 重新統計索引資訊

force index 強制選擇乙個索引

長度越小占用空間越小

結合業務定義好長度,即節省空間,又不用額外增加太多查詢成本。

無法利用覆蓋索引

當記憶體資料頁跟磁碟資料頁內容不一致的時候,我們稱這個記憶體頁為「髒頁」。記憶體資料寫入到磁碟後,記憶體和磁

利用wal技術,資料庫將隨機寫轉換成了順序寫,大大提高了效能。但是,帶來了記憶體髒頁的問題。

flush會占用資源。

刪除資料 插入資料(隨機插入)都會造成空洞

alter table a engine=innodb 重建表 收縮資料空洞(90%滿 )

count(字段),則表示返回滿足條件的資料行裡面,引數「字段」不為 null 的總個數

count(*) 是例外,並不會把全部字段取出來,而是專門做了優化,不取值。count(*) 肯定不是 null,按行累加

按照效率排序的話,count(字段)

MySQL學習筆記 09 多表查詢練習

部門表 create table dept id int primary key primary key,部門id dname varchar 50 部門名稱 loc varchar 50 部門所在地 新增4個部門 insert into dept id,dname,loc values 10,教研...

python 學習筆記(09)

字串格式化 轉換說明符 字元 標記轉換說明符的開始 轉換標誌 可選 減號 左對齊 加號 在轉換值之前要加上正負號 空白字元 正數之前保留空格 0 零 轉換值若位數不夠用0填充 最小字段寬度 可選 轉換後的字串至少應該具有該值指定的寬度,如果是 則寬度會從值元組中讀出 點 後跟精度值 可選 如果是實數...

python 學習筆記(09)

字串格式化 轉換說明符 字元 標記轉換說明符的開始 轉換標誌 可選 減號 左對齊 加號 在轉換值之前要加上正負號 空白字元 正數之前保留空格 0 零 轉換值若位數不夠用0填充 最小字段寬度 可選 轉換後的字串至少應該具有該值指定的寬度,如果是 則寬度會從值元組中讀出 點 後跟精度值 可選 如果是實數...