疏漏總結 二十三

2021-10-23 08:18:41 字數 1699 閱讀 5317

change buffer

change buffer的最主要目的是將二級快取的結果儲存下來,減小二級索引隨機io的延遲與消耗,這裡注意二級索引和聚簇索引又不一樣,因為二級索引有可能是不唯一的。

當我們執行更新語句的時候,像insert update delete這種語句,在使用了之後,會更新二級索引,這對io上的消耗是很大的, 所以change buffer就對這個結果進行了乙個快取,減少io消耗。

而當我們執行需求的時候,change buffer的結果會直接同步到buffer pool中,注意,這些都是在記憶體上的操作,但是等系統空閒的時候會自動寫入硬碟。

但是如果我們對二級索引的使用概率不高,那麼就可以不用去使用,也是有一定資源消耗的,畢竟change buffer更適用於頻繁寫入的操作.

b+樹對範圍查詢好 mongodb b樹單次查詢要好 innodb

innodb的資料結構是b+樹,b+樹相對於b樹,除了幾個基本的區別以外,在效能上,b+樹對於範圍查詢的效果更好,b樹單詞查詢的效果要好,因為非葉子節點也有資料,直接就能查到返回了,而mongodb就是用的這種資料結構,也是考慮到了查詢的特點。

insert 語句執行的過程

介紹之前,先說一下redo log 和 bin log

這個log,主要是去記錄你之前的一些sql操作,屬於物理日誌,用於crash-safe的時候,可以用redo log 去進行乙個恢復操作。當我們做乙個更新操作的時候,會先寫入redo log,然後再寫入記憶體,然後空閒的時候寫入硬碟

那麼我們在執行乙個更新操作的時候,首先會將更新的記錄放進redo log,然後這個時候,redo log處於prepare的狀態,等執行器執行結束之後,就commit transaction,然後會將bin log寫入到硬碟,在執行器呼叫引擎提交事務之後,會把寫入的redo log進行commit,然後就更新完成了。

意向鎖

意向鎖主要是來解決非意向鎖的一些問題的,意向鎖分為意向共享鎖和意向排它鎖,他們都是表級鎖,而且都是互相相容的,但是單純的共享鎖和排它鎖,只有共享+共享是相容,其他都是不相容的,我們使用意向共享鎖是lock in share mode而使用意向排他鎖是for update 用法都是一樣的,但是要注意的是,單純的共享鎖和排它鎖,有表級和行級兩種,如果要是表級的is和ix和行級的sx,那就不會衝突,但是如果是表級的is ix 和表級的s x,那就會衝突。

意向鎖存在的意義就在於,解決事務隔離的基礎上,做到了行級鎖和表級鎖共存。

1開頭的狀態碼

1開頭的狀態碼是表示服務端希望客戶端繼續傳送請求,意思就是客戶端現在屬於一種中間的狀態,需要繼續傳送請求到達下乙個狀態。

mysql倒排索引

倒排索引:整體的結果利用關鍵字建立起乙個hash表,然後直接搜尋關鍵字就可以得到結果,就是倒排索引。

mysql的倒排索引是基於全文索引的。在建立innodb索引的時候會預設建立一張全文索引表。儲存位置資訊和id(索引內容)

string.intern()

檢查常量池是否有這個string,有就直接返回,沒有就先加入到常量池然後再重新返回

@transaction註解在方法上,同乙個類裡面的另乙個方法呼叫它,事務能生效嗎

不生效,因為**不會被觸發

隨筆 二十三

1.gradle 完a整指南 android 2.android gradle 外掛程式 3.0 挖坑日記 3.android效能優化全方面解析 4.android studio 3.2新功能特性 5.重新認識 androidstudio 和 gradle,這些都是你應該知道的 6。美團外賣andr...

演算法(二十三)

1 給定乙個整數陣列nums,找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。public int maxsubarray int nums return maxsum 複雜度分析 public int maxsubarray int nums return maxsum 2 ...

二十三 管道

在go語言中可以通過chan來定義管道,可以通過操作符 和 對管道進行讀取和寫入操作 通過管道維護例程狀態 使用make函式初始化,make chan type make chan type,len 不帶len引數的用於建立無快取區的管道,使用len建立指定緩衝區長度的管道 讀寫管道 可通過操作符 ...