mysql索引和事物

一枢贿、數(shù)據(jù)庫(kù)索引

1.MySQL 索引可以分為單列索引瑰抵、復(fù)合索引暇榴、唯一索引橱赠、主鍵索引等
#創(chuàng)建索引的兩種方式
CREATE [UNIQUE] INDEX index_name ON table_name(index_col_name[,...]);
ALTER TABLE table_name ADD [UNIQUE] INDEX index_name ON (index_col_name[,...]);
2.關(guān)于索引使用的幾個(gè)原則
  • WHERE子句中的列可能最適合做為索引

  • 不要嘗試為性別或者有無(wú)這類字段等建立索引(因?yàn)轭愃菩詣e的列尤仍,一般只含有“0”和“1”,無(wú)論搜索結(jié)果如何都會(huì)大約得出一半的數(shù)據(jù))

  • 如果創(chuàng)建復(fù)合索引狭姨,要遵守最左前綴法則宰啦。即查詢從索引的最左前列開(kāi)始,并且不跳過(guò)索引中的列

  • 不要過(guò)度使用索引饼拍。每一次的更新赡模,刪除,插入都會(huì)維護(hù)該表的索引师抄,更多的索引意味著占用更多的空間

  • 使用InnoDB存儲(chǔ)引擎時(shí)漓柑,記錄(行)默認(rèn)會(huì)按照一定的順序存儲(chǔ),如果已定義主鍵叨吮,則按照主鍵順序存儲(chǔ)辆布,由于普通索引都會(huì)保存主鍵的鍵值,因此主鍵應(yīng)盡可能的選擇較短的數(shù)據(jù)類型茶鉴,以便節(jié)省存儲(chǔ)空間

  • 不要嘗試在索引列上使用函數(shù)锋玲。

二、鎖以及事務(wù)的隔離級(jí)別

1.兩種類型的鎖
  • 共享鎖(讀鎖)
    將對(duì)象數(shù)據(jù)變?yōu)橹蛔x對(duì)象的鎖定涵叮,允許多個(gè)用戶進(jìn)程同時(shí)訪問(wèn)數(shù)據(jù)惭蹂,但在鎖釋放前無(wú)法修改數(shù)據(jù)。

  • 排他鎖(寫鎖)
    在數(shù)據(jù)對(duì)象進(jìn)行變更時(shí)鎖定割粮,不允許其他用戶進(jìn)程訪問(wèn)和修改數(shù)據(jù)盾碗,保證了數(shù)據(jù)完整性。

mysql包含兩種類型的執(zhí)行引擎InnoDB和MyISAM舀瓢。InnoDB行鎖是通過(guò)給索引上的索引項(xiàng)加鎖來(lái)實(shí)現(xiàn)的廷雅,也就是說(shuō),只有通過(guò)索引條件檢索數(shù)據(jù),InnoDB才使用行級(jí)鎖榜轿,否則幽歼,InnoDB將使用表鎖。MyISAM只支持表鎖谬盐,不提供事物支持甸私,性能比InnoDB高上一些。

  • mysql中的顯示加鎖語(yǔ)法
-- 共享鎖(S)
SELECT * FROM table_name WHERE ... LOCK IN SHARE MODE;

-- 排他鎖(X)
SELECT * FROM table_name WHERE ... FOR UPDATE;

# FOR UPDATE僅適用于InnoDB飞傀,且必須在交易區(qū)塊(BEGIN/COMMIT)中才能生效皇型。
# 當(dāng)使用FOR UPDATE時(shí)WHERE條件語(yǔ)句未用到索引時(shí)將造成表鎖。
  • 索引選擇性:Selectivity

索引的選擇性(Selectivity)砸烦,是指不重復(fù)的索引值(也叫基數(shù)弃鸦,Cardinality)與表記錄數(shù)(#T)的比值:index Selectivity = Cardinality / #T
顯然選擇性的取值范圍為(0, 1],選擇性越高的索引價(jià)值越大幢痘,這是由B+Tree的性質(zhì)決定的唬格。簡(jiǎn)單來(lái)說(shuō)就是我們?cè)谶x擇哪些字段作為索引列的時(shí)候要考慮當(dāng)前列的數(shù)據(jù)重復(fù)率是否很高,如果數(shù)據(jù)重復(fù)率特別高那么設(shè)置索引的意義并不大颜说,反而會(huì)影響數(shù)據(jù)寫入的效率购岗。

//統(tǒng)計(jì)索引選擇性
SELECT count(DISTINCT(concat(first_name, left(last_name, 4))))/count(*) AS Selectivity FROM mem_user;
2.四種隔離級(jí)別
  • READ_UNCOMMITTED(讀未提交)
    事物未提交時(shí)可以被其他事物讀取,會(huì)出現(xiàn)臟讀门粪、不可重復(fù)讀喊积、幻讀現(xiàn)象

  • READ_UNCOMMITTED(讀已提交,鎖定正在讀取的行)
    事物提交后可被其他事物讀取玄妈,可以避免臟讀乾吻,會(huì)出現(xiàn)不可重復(fù)讀、幻讀現(xiàn)象拟蜻。

  • REPEATABLE_READ(可重復(fù)讀绎签,鎖定讀取的所有行,mysql默認(rèn)事物隔離級(jí)別)
    可以防止臟讀瞭郑、不可重復(fù)讀辜御,但會(huì)出幻讀鸭你。

  • SERIALIZABLE(可串行化)
    事物被處理為順序執(zhí)行屈张,效率低下。

隔離級(jí)別越高袱巨,數(shù)據(jù)的完整性也就越高阁谆,但同時(shí)運(yùn)行性下降,相反如果隔離級(jí)別越低數(shù)據(jù)完整性越低愉老,同時(shí)運(yùn)行性也就提高了场绿,筆者在實(shí)際工作當(dāng)中遇到了許多關(guān)于事物隔離級(jí)別導(dǎo)致的問(wèn)題。所以在不同的應(yīng)用場(chǎng)景下設(shè)置合理的隔離級(jí)別是非常重要的嫉入。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末焰盗,一起剝皮案震驚了整個(gè)濱河市璧尸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌熬拒,老刑警劉巖爷光,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異澎粟,居然都是意外死亡蛀序,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門活烙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)徐裸,“玉大人,你說(shuō)我怎么就攤上這事啸盏≈睾兀” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵回懦,是天一觀的道長(zhǎng)檬姥。 經(jīng)常有香客問(wèn)我,道長(zhǎng)粉怕,這世上最難降的妖魔是什么健民? 我笑而不...
    開(kāi)封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮贫贝,結(jié)果婚禮上秉犹,老公的妹妹穿的比我還像新娘。我一直安慰自己稚晚,他們只是感情好崇堵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著客燕,像睡著了一般鸳劳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上也搓,一...
    開(kāi)封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天赏廓,我揣著相機(jī)與錄音,去河邊找鬼傍妒。 笑死幔摸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的颤练。 我是一名探鬼主播既忆,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了患雇?” 一聲冷哼從身側(cè)響起跃脊,我...
    開(kāi)封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎苛吱,沒(méi)想到半個(gè)月后匾乓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡又谋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年拼缝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片彰亥。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡咧七,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出任斋,到底是詐尸還是另有隱情继阻,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布废酷,位于F島的核電站瘟檩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏澈蟆。R本人自食惡果不足惜墨辛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望趴俘。 院中可真熱鬧睹簇,春花似錦、人聲如沸寥闪。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)疲憋。三九已至凿渊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缚柳,已是汗流浹背埃脏。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留喂击,地道東北人剂癌。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓淤翔,卻偏偏與公主長(zhǎng)得像翰绊,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

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