日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

被面试官PUA了:创建索引时一定会锁表?

發(fā)布時間:2023/12/29 windows 32 coder
生活随笔 收集整理的這篇文章主要介紹了 被面试官PUA了:创建索引时一定会锁表? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

索引主要是用于提高數(shù)據(jù)檢索速度的一種機(jī)制,通過索引數(shù)據(jù)庫可以快速定位到目標(biāo)數(shù)據(jù)的位置,而不需要遍歷整個數(shù)據(jù)集,它就像書籍的目錄部分,有它的存在,可以大大加速查詢的效率。

那么問題來了:在創(chuàng)建索引時一定會鎖表嗎?

如果你看的是網(wǎng)上的一些資料,或者是通過 chatgpt,那么很可能得到的結(jié)果是這樣的“是的,創(chuàng)建索引時是會鎖表的。”,但這個回答是不正確的,為什么呢?

典型回答

因?yàn)樵?MySQL 5.6 之前,創(chuàng)建索引時會鎖表,所以,在早期 MySQL 版本中一定要在線上慎用,因?yàn)閯?chuàng)建索引時會導(dǎo)致其他會話阻塞(select 查詢命令除外)。

但這個問題,在 MySQL 5.6.7 版本中得到了改變,因?yàn)樵?MySQL 5.6.7 中引入了 Online DDL 技術(shù)(在線 DDL 技術(shù)),它允許在創(chuàng)建索引時,不阻塞其他會話(所有的 DML 操作都可以一起并發(fā)執(zhí)行)。

什么是 DDL?

DDL(Data Definition Language,數(shù)據(jù)庫定義語言):用于定義和管理數(shù)據(jù)庫的結(jié)構(gòu),它主要包括以下語句:

  • CREATE:用于創(chuàng)建數(shù)據(jù)庫、表、索引、視圖等對象。
  • ALTER:用于修改數(shù)據(jù)庫、表、索引、視圖等已存在的對象的結(jié)構(gòu)。
  • DROP:用于刪除數(shù)據(jù)庫、表、索引、視圖等對象。
  • TRUNCATE:用于刪除表中的所有數(shù)據(jù),但保留表的結(jié)構(gòu)。
  • RENAME:用于重命名數(shù)據(jù)庫、表等對象。

什么是 DML?

DML (Data Manipulation Language,數(shù)據(jù)操作語言) :用于查詢和修改數(shù)據(jù),它主要包括以下語句:

  • INSERT:用于向表中插入新的數(shù)據(jù)行。
  • UPDATE:用于更新表中已存在的數(shù)據(jù)行。
  • DELETE:用于刪除表中的數(shù)據(jù)行。
  • SELECT:用于從表中檢索數(shù)據(jù)。雖然 SELECT 主要用于查詢,但某些包含數(shù)據(jù)修改的擴(kuò)展 SQL 功能(如 LIMIT、ORDER BY、GROUP BY 等)也屬于 DML 的范疇。

什么是 Online DDL?

Online DDL(Online Data Definition Language,在線數(shù)據(jù)定義語言)是指在數(shù)據(jù)庫運(yùn)行期間執(zhí)行對表結(jié)構(gòu)或其他數(shù)據(jù)庫對象的更改操作,而不需要中斷或阻塞其他正在進(jìn)行的事務(wù)和查詢。

Online DDL 官方介紹文檔:https://dev.mysql.com/doc/refman/8.0/en/innodb-online-ddl-operations.html

Online DDL 最重要操作定義如下:

簡單翻譯一下以上內(nèi)容:

從上面的表格可以看出,有了 Online DDL 技術(shù)之后,在添加索引時,會對原本進(jìn)行操作,并且允許和 DML(數(shù)據(jù)操作語言 INSERT、UPDATE、DELETE、SELECT)一起并發(fā)執(zhí)行了。

小結(jié)

在 MySQL 5.6 之前,創(chuàng)建索引時會鎖表,但在 MySQL 5.6.7 之后,因?yàn)樾略隽?Online DDL 技術(shù),所以此時在添加索引時,是可以和 DML 數(shù)據(jù)操作語言 INSERT、UPDATE、DELETE、SELECT 等命令一起執(zhí)行的。

本文已收錄到我的面試小站 www.javacn.site,其中包含的內(nèi)容有:Redis、JVM、并發(fā)、并發(fā)、MySQL、Spring、Spring MVC、Spring Boot、Spring Cloud、MyBatis、設(shè)計模式、消息隊(duì)列等模塊。

總結(jié)

以上是生活随笔為你收集整理的被面试官PUA了:创建索引时一定会锁表?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。