最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL 原理與優(yōu)化之Update 優(yōu)化

 更新時間:2022年08月14日 10:58:10   作者:51CTO崔皓???????  
這篇文章主要介紹了MySQL 原理與優(yōu)化之Update 優(yōu)化,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)有所幫助

前言:

談到Update 語句大家可能不會陌生,很多情況下我們都會使用它來更新table中的記錄。一般而言我們會使用innodb 的存儲引擎,innodb引擎是基于行鎖的,具體一點說是針對索引來加鎖的(保證鎖不能失效),并不是針對記錄加鎖,如果對于沒有建立索引的字段進(jìn)行過濾操作,從而執(zhí)行update 的話,會導(dǎo)致表鎖 。

今天就看看在使用innodb的時候如何使用update 語句。

已經(jīng)存在course 表,其內(nèi)容如下:

目前該表沒有加任何的索引,默認(rèn)情況下id 是表的索引。

接著讓我們分別開啟兩個事務(wù)(兩個客戶端),分別執(zhí)行下述指令。

開啟第一個事務(wù):

begin;
update course set name = 'Java' where id = 1;

3

開啟另外一個事務(wù)

begin;
update course set name = 'Spark' where id = 4;

兩個事務(wù)都可以執(zhí)行,然后再分別執(zhí)行兩個事務(wù)的 commit 操作,就可以看到更新的結(jié)果。

兩個事務(wù)能夠并行執(zhí)行的條件是id 是表course 的索引,可以由于update id 分別對應(yīng)2 和4 ,只是針對這兩行記錄進(jìn)行加鎖。

接著讓我們看看另外一個例子,依舊是開啟兩個事務(wù),但是where 條件選擇使用name ,而且name 沒有作為course 表的索引。

開啟一個事務(wù):

begin;
update course set name = 'Vue.js' where name = 'PHP';

然后再執(zhí)行另外一個事務(wù)

begin;
update course set name = 'SQLServer' where name = 'MySQL';

此時在執(zhí)行第二個事務(wù)的update 語句的時候,會被阻塞。就是因為針對name 的過濾條件并不是course 的索引,此時的update 語句進(jìn)行了鎖表的操作,必須等第一個事務(wù)commit之后,釋放掉表鎖,第二個事務(wù)才能繼續(xù)執(zhí)行。

為了讓兩個事務(wù)能夠并行執(zhí)行,我們將name 加入到course 的索引中去。

create index index_name on course(name);
show index from course;

接著再執(zhí)行剛才的兩個事務(wù),這兩個事務(wù)分別對不同的記錄進(jìn)行更新,where 中的name條件不一樣的情況下,也不會出現(xiàn)鎖表的情況,這是因為將name 作為了course 的索引。

為了演示方便,這里我們將更新的條件調(diào)整一下:

開啟一個事務(wù):

begin;
update course set name = 'PHP' where name = 'Vue.js';

然后再執(zhí)行另外一個事務(wù)

begin;
update course set name = 'MySQL' where name = 'SQLServer';

結(jié)果和我們預(yù)想的一樣,兩個事務(wù)可以并行執(zhí)行,同時在commit之后能夠看到結(jié)果。

總結(jié)一下, 如果使用innodb存儲引擎,update 的時候存在where 條件的情況下,條件字段是索引的情況可以提升更新的效率,避免鎖表的情況發(fā)生。

到此這篇關(guān)于MySQL 原理與優(yōu)化之Update 優(yōu)化的文章就介紹到這了,更多相關(guān)MySQL Update 優(yōu)化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL全面瓦解之查詢的正則匹配詳解

    MySQL全面瓦解之查詢的正則匹配詳解

    這篇文章主要給大家介紹了關(guān)于MySQL全面瓦解之查詢的正則匹配的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • MySQL HandlerSocket插件安裝配置教程

    MySQL HandlerSocket插件安裝配置教程

    這篇文章主要介紹了MySQL HandlerSocket插件安裝配置,包括PHP HandlerSocket插件的安裝配置,需要的朋友可以參考下
    2014-04-04
  • mysql 8.0.17 安裝圖文教程

    mysql 8.0.17 安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.17 安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • MySql如何將查詢的出來的字段進(jìn)行轉(zhuǎn)換

    MySql如何將查詢的出來的字段進(jìn)行轉(zhuǎn)換

    這篇文章主要介紹了MySql如何將查詢的出來的字段進(jìn)行轉(zhuǎn)換,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • ubuntu安裝mysql數(shù)據(jù)庫方法

    ubuntu安裝mysql數(shù)據(jù)庫方法

    ubuntu基于linux的免費(fèi)開源桌面PC操作系統(tǒng),十分契合英特爾的超極本定位,支持x86、64位和ppc架構(gòu)。這篇文章給大家介紹ubuntu安裝mysql數(shù)據(jù)庫方法,非常不錯,需要的朋友參考下吧
    2019-08-08
  • MySQL 5.7升級8.0報異常:ONLY_FULL_GROUP_BY的問題解決

    MySQL 5.7升級8.0報異常:ONLY_FULL_GROUP_BY的問題解決

    本文主要介紹了MySQL 5.7升級8.0報異常的問題解決,主要是ONLY_FULL_GROUP_BY,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • centos7.2下安裝mysql5.7數(shù)據(jù)庫的命令詳解

    centos7.2下安裝mysql5.7數(shù)據(jù)庫的命令詳解

    這篇文章主要介紹了centos7.2下安裝mysql5.7數(shù)據(jù)庫,文中給出了所有的命令,按照命令執(zhí)行就會安裝上 ,需要的朋友可以參考下
    2019-07-07
  • 在MySQL數(shù)據(jù)庫中使用C執(zhí)行SQL語句的方法

    在MySQL數(shù)據(jù)庫中使用C執(zhí)行SQL語句的方法

    與PostgreSQL相似,可使用許多不同的語言來訪問MySQL,包括C、C++、Java和Perl。從Professional Linux Programming中第5章有關(guān)MySQL的下列章節(jié)中,Neil Matthew和Richard Stones使用詳盡的MySQL C接口向我們介紹了如何在MySQL數(shù)據(jù)庫中執(zhí)行SQL語句。
    2012-10-10
  • 關(guān)于MySQL?onlinedb數(shù)據(jù)庫的一些查詢語句大全

    關(guān)于MySQL?onlinedb數(shù)據(jù)庫的一些查詢語句大全

    這篇文章主要給大家介紹了關(guān)于MySQL?onlinedb數(shù)據(jù)庫的一些查詢語句,文中通過代碼實例介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用MySQL具有一定的參考價值,需要的朋友可以參考下
    2023-12-12
  • MySQL分庫分表的幾種方式

    MySQL分庫分表的幾種方式

    這篇文章主要介紹了MySQL分庫分表的幾種方式,分庫分表方案是對關(guān)系型數(shù)據(jù)庫數(shù)據(jù)存儲和訪問機(jī)制的一種補(bǔ)充,下文更多相關(guān)介紹需要的小伙伴可以參考一下
    2022-04-04

最新評論

海安县| 石楼县| 萍乡市| 彰武县| 姜堰市| 获嘉县| 托克托县| 阳朔县| 澎湖县| 贵定县| 林甸县| 丰台区| 崇礼县| 东城区| 客服| 温宿县| 龙游县| 忻城县| 长汀县| 黔东| 务川| 洛扎县| 江阴市| 苍梧县| 澎湖县| 长海县| 连山| 西青区| 多伦县| 云南省| 扶风县| 霍城县| 方正县| 延川县| 蓬安县| 石家庄市| 嘉善县| 荣成市| 镇巴县| 凤凰县| 新源县|