Mysql HANDLER語(yǔ)句

HANDLER語(yǔ)法
HANDLER tbl_name OPEN [ [AS] alias]

HANDLER tbl_name READ index_name { = | <= | >= | < | > } (value1,value2,...)
    [ WHERE where_condition ] [LIMIT ... ]
HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST }
    [ WHERE where_condition ] [LIMIT ... ]
HANDLER tbl_name READ { FIRST | NEXT }
    [ WHERE where_condition ] [LIMIT ... ]

HANDLER tbl_name CLOSE

HANDLE語(yǔ)句提供了直接訪問(wèn)存儲(chǔ)引擎的接口。對(duì)于innodb和myism表都是可用的。

HANDLER ... OPEN語(yǔ)句會(huì)打開(kāi)一個(gè)表,使其能夠用后續(xù)的HANDLER ... READ語(yǔ)句訪問(wèn)。這個(gè)表不能和其他會(huì)話共享直到HANDLER ... CLOSE或會(huì)話關(guān)閉刽宪。

如果使用別名打開(kāi)表,后續(xù)在使用HANDLER語(yǔ)句打開(kāi)表必須使用別名而不能用原表名界酒。如果不使用別名圣拄,而是使用帶有數(shù)據(jù)庫(kù)名前綴的表名,后續(xù)引用需要去掉數(shù)據(jù)庫(kù)名毁欣。例如庇谆,使用mydb.mytable,后續(xù)引用需使用mytable。

第一個(gè)HANDER ... READ語(yǔ)法獲取的是特定索引滿足給定值并且滿足where條件的行署辉。如果是多列索引族铆,給定的索引列值應(yīng)該是用逗號(hào)隔開(kāi)的列表。要么指定索引中所有列的值哭尝,要么指定索引列中的最左邊的不幾列哥攘。如果索引my_idx包含col_a,col_b,col_c。HANDLER語(yǔ)句可以指定索引中的全部三個(gè)列值材鹦,或者是最左邊的幾列逝淹。例如:

HANDLER ... READ my_idx = (col_a_val,col_b_val,col_c_val) ...
HANDLER ... READ my_idx = (col_a_val,col_b_val) ...
HANDLER ... READ my_idx = (col_a_val) ...

HANDLER也可以像這樣使用表的主鍵(PRIMARY):

HANDLER tbl_name READ `PRIMARY` ...

第二個(gè)HANDLER ... READ語(yǔ)法表示按照索引的某種順序來(lái)按照where條件篩選結(jié)果行

第三個(gè)HANDLER ... READ語(yǔ)法表示按照表中行的自然順序匹配where條件。當(dāng)需要全表掃描來(lái)獲取每一行時(shí)(結(jié)果行足夠多)桶唐,比第一栅葡、二種使用索引方式都要更快。實(shí)際上尤泽,自然行順序就是數(shù)據(jù)行在MyISAM表數(shù)據(jù)文件中的存放順序欣簇。這條語(yǔ)句對(duì)于InnoDB表同樣適用,但是不存在這樣的概念坯约,因?yàn)闆](méi)有獨(dú)立的數(shù)據(jù)文件熊咽。

若沒(méi)有LIMIT子句,所有HANDLER ... READ形式的語(yǔ)句都最多只會(huì)獲取一行闹丐。要返回多少行横殴,就LIMIT多少。

HANDLER ... CLOSE用于關(guān)閉用HANDLER ... OPEN打開(kāi)的表卿拴。

為什么使用HANDLER接口衫仑?
  • HANDLER更快
    • HANDLER ... OPEN可以分配特定存儲(chǔ)引擎的句柄對(duì)象梨与。這個(gè)句柄對(duì)象可以被后續(xù)HANDLER(關(guān)閉之前的)語(yǔ)句重用;不需要每次都初始化文狱。
    • 語(yǔ)句解析更少
    • 不需要優(yōu)化器或查詢檢查等額外消耗
    • handler接口不必提供數(shù)據(jù)的一致性查看(例如粥鞋,允許臟讀),因此存儲(chǔ)引擎是可以實(shí)現(xiàn)select語(yǔ)句正常情況下不允許使用的執(zhí)行計(jì)劃瞄崇。
  • HANDLER使得使用低層類ISAM接口的應(yīng)用可以很輕松地和Mysql對(duì)接陷虎。
  • HANDLER讓你可以以一種對(duì)于select語(yǔ)句很難(甚至不可能)的方式來(lái)詳細(xì)研究數(shù)據(jù)庫(kù)。HANDLER接口是一種更自然的方式來(lái)查看數(shù)據(jù)

HANDLER從某種意義上講是一種更低層的語(yǔ)言杠袱。例如,它不提供一致性窝稿。也就是說(shuō)楣富,HANDLER ... OPEN語(yǔ)句不會(huì)使用表的快照,并且不會(huì)鎖表伴榔。這意味著HANDLER ... OPEN語(yǔ)句執(zhí)行之后纹蝴,表數(shù)據(jù)可以被修改(當(dāng)前會(huì)話或其他會(huì)話)并且這些修改中的一部分可能被HANDLER ... NEXT或者HANDLER ... PREV掃描。

一個(gè)打開(kāi)的handler可以被關(guān)閉然后重新打開(kāi)踪少,這種情況下handler會(huì)丟失表中的位置塘安。下面的兩個(gè)場(chǎng)景中都會(huì)發(fā)生這樣的情況:

  • 任何會(huì)話執(zhí)行了FLUSH TABLES(經(jīng)驗(yàn)證,只有當(dāng)前會(huì)話可以FLUSH TABLES)或者對(duì)handler打開(kāi)的表執(zhí)行了DDL語(yǔ)句
  • 會(huì)話在handler在打開(kāi)的時(shí)候執(zhí)行了使用該表的non-handler語(yǔ)句

TRUNCATE TABLE會(huì)關(guān)閉用HANDER OPEN打開(kāi)的表上所有handlers援奢。

如果一張用HANDLER打開(kāi)的表被FLUSH TABLES tbl_name WITH READ LOCKflushed兼犯,handler會(huì)被隱式flushed并且丟失位置

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市集漾,隨后出現(xiàn)的幾起案子切黔,更是在濱河造成了極大的恐慌,老刑警劉巖具篇,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纬霞,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡驱显,警方通過(guò)查閱死者的電腦和手機(jī)诗芜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)埃疫,“玉大人伏恐,你說(shuō)我怎么就攤上這事∪刍郑” “怎么了脐湾?”我有些...
    開(kāi)封第一講書人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)叙淌。 經(jīng)常有香客問(wèn)我秤掌,道長(zhǎng)愁铺,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任闻鉴,我火速辦了婚禮茵乱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘孟岛。我一直安慰自己瓶竭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布渠羞。 她就那樣靜靜地躺著斤贰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪次询。 梳的紋絲不亂的頭發(fā)上荧恍,一...
    開(kāi)封第一講書人閱讀 51,775評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音屯吊,去河邊找鬼送巡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛盒卸,可吹牛的內(nèi)容都是我干的骗爆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蔽介,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼摘投!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起虹蓄,我...
    開(kāi)封第一講書人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤谷朝,失蹤者是張志新(化名)和其女友劉穎梅惯,沒(méi)想到半個(gè)月后狠怨,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體型型,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泽本,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年速缨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了柏副。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片图柏。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡闪水,死狀恐怖累铅,靈堂內(nèi)的尸體忽然破棺而出跃须,到底是詐尸還是另有隱情,我是刑警寧澤娃兽,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布菇民,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏第练。R本人自食惡果不足惜阔馋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望娇掏。 院中可真熱鬧呕寝,春花似錦、人聲如沸婴梧。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)塞蹭。三九已至孽江,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間番电,已是汗流浹背竟坛。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钧舌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓涎跨,卻偏偏與公主長(zhǎng)得像洼冻,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子隅很,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356

推薦閱讀更多精彩內(nèi)容