mysql bnl MySQL中的BNL優化器

2021-10-18 00:27:19 字數 998 閱讀 5459

在5.7以上版本中,bnl優化器預設是開啟的,

使用bnl可以較為明顯的降低訪問內錶的次數,同時也降低回表的io次數,以此來達到優化的目的。

只有當join型別是all/index/range時才可以,也就是內錶不使用索引或者索引效率很低時才不得已使用。

buffer的大小由join_buffer_size進行設定,buffer中儲存著參與連線的所有資訊,join完成後buffer釋放。

對於使用到bnl特性且效能較差的sql,建議在session級別將join_buffer_size臨時增大來提高效能。

表的join操作通常是通過效率較高的索引來做ref或者eq_ref方式連線,這種情況下,bnl是無法使用的。

對更為常見的join操作,mysql引入了mrr和bka,目的是減少磁碟的隨機訪問。

Python中的descriptor中的一點疑問

在我的印象中,類中的函式是可以有兩種呼叫方式的,如下 class b def func self return 10 b b b.func b.func b 於是,在之前研究descriptor的時候,我就有了幾點困惑 我將 更換成了如下兩個版本 版本1 import time class lazy...

python中的dict Python中的dict

dict python內建了字典 dict的支援,dict全稱dictionary,在其他語言中也稱為map,使用鍵 值 key value 儲存,具有極快的查詢速度。d print dict get michael d michael add a element d adam 67 print d...

zset中的score Redis中的事務

watch 監控某個或幾個key的變化 multi 接下來的命令不會立馬執行,會先放入乙個事務的佇列中 exec 執行事務佇列中的命令 unwatch 可以在watch執行之後 multi命令執行之前執行,效果是解除對某個key的監控 discard 可以在multi命令執行之後exec命令執行之前...