成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

詳解MySQL 8.0 之不可見索引

瀏覽:35日期:2023-10-10 10:14:39

MySQL 8.0 從第一版release 到現在已經走過了4個年頭了,8.0版本在功能和代碼上做了相當大的改進和重構。和DBA圈子里的朋友交流,大部分還是5.6 ,5.7的版本,少量的走的比較靠前采用了MySQL 8.0。為了緊追數據庫發展的步伐,能夠盡早享受技術紅利,我們準備將MySQL 8.0引入到有贊的數據庫體系。

落地之前 我們會對MySQL 8.0的新特性和功能,配置參數,升級方式,兼容性等等做一系列的學習和測試。以后陸陸續續會發布文章出來。本文算是MySQL 8.0新特性學習的第一篇吧,聊聊 不可見索引。

不可見索引

不可見索引中的不可見是針對優化器而言的,優化器在做執行計劃分析的時候(默認情況下)是會忽略設置了不可見屬性的索引。

為什么是默認情況下,如果 optimizer_switch設置use_invisible_indexes=ON 是可以繼續使用不可見索引。

話不多說,我們先測試幾個例子

如何設置不可見索引

我們可以通過帶上關鍵字VISIBLE|INVISIBLE的create table,create index,alter table 設置索引的可見性。

mysql> create table t1 (i int, > j int, > k int, > index i_idx (i) invisible) engine=innodb;Query OK, 0 rows affected (0.41 sec)mysql> create index j_idx on t1 (j) invisible;Query OK, 0 rows affected (0.19 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> alter table t1 add index k_idx (k) invisible;Query OK, 0 rows affected (0.10 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> select index_name,is_visible from information_schema.statistics where table_schema=’test’ and table_name=’t1’;+------------+------------+| INDEX_NAME | IS_VISIBLE |+------------+------------+| i_idx | NO || j_idx | NO || k_idx | NO |+------------+------------+3 rows in set (0.01 sec)mysql> alter table t1 alter index i_idx visible;Query OK, 0 rows affected (0.06 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> select index_name,is_visible from information_schema.statistics where table_schema=’test’ and table_name=’t1’;+------------+------------+| INDEX_NAME | IS_VISIBLE |+------------+------------+| i_idx | YES || j_idx | NO || k_idx | NO |+------------+------------+3 rows in set (0.00 sec)

不可見索引的作用

面對歷史遺留的一大堆索引,經過數輪新老交替開發和DBA估計都不敢直接將索引刪除,尤其是遇到比如大于100G的大表,直接刪除索引會提升數據庫的穩定性風險。

有了不可見索引的特性,DBA可以一邊設置索引為不可見,一邊觀察數據庫的慢查詢記錄和thread running 狀態。如果數據庫長時間沒有相關慢查詢 ,thread_running比較穩定,就可以下線該索引。反之,則可以迅速將索引設置為可見,恢復業務訪問。

Invisible Indexes 是 server 層的特性,和引擎無關,因此所有引擎(InnoDB, TokuDB, MyISAM, etc.)都可以使用。

設置完不可見索引,執行計劃無法使用索引

mysql> show create table t2 G*************************** 1. row *************************** Table: t2Create Table: CREATE TABLE `t2` ( `i` int NOT NULL AUTO_INCREMENT, `j` int NOT NULL, PRIMARY KEY (`i`), UNIQUE KEY `j_idx` (`j`) /*!80000 INVISIBLE */) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci1 row in set (0.01 sec)mysql> insert into t2(j) values(1),(2),(3),(4),(5),(6),(7);Query OK, 7 rows affected (0.04 sec)Records: 7 Duplicates: 0 Warnings: 0mysql> explain select * from t2 where j=3G*************************** 1. row *************************** id: 1 select_type: SIMPLE table: t2 partitions: NULL type: ALLpossible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 7 filtered: 14.29 Extra: Using where1 row in set, 1 warning (0.01 sec)mysql> alter table t2 alter index j_idx visible;Query OK, 0 rows affected (0.08 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> explain select * from t2 where j=3G*************************** 1. row *************************** id: 1 select_type: SIMPLE table: t2 partitions: NULL type: constpossible_keys: j_idx key: j_idx key_len: 4 ref: const rows: 1 filtered: 100.00 Extra: Using index1 row in set, 1 warning (0.01 sec)

使用不可見索引的注意事項

The feature applies to indexes other than primary keys (either explicit or implicit).

不可見索引是針對非主鍵索引的。主鍵不能設置為不可見,這里的 主鍵 包括顯式的主鍵或者隱式主鍵(不存在主鍵時,被提升為主鍵的唯一索引) ,我們可以用下面的例子展示該規則。

mysql> create table t2 ( >i int not null, >j int not null , >unique j_idx (j) >) ENGINE = InnoDB;Query OK, 0 rows affected (0.16 sec)mysql> select index_name,is_visible from information_schema.statistics where table_schema=’test’ and table_name=’t2’;+------------+------------+| INDEX_NAME | IS_VISIBLE |+------------+------------+| j_idx | YES |+------------+------------+1 row in set (0.00 sec)### 沒有主鍵的情況下,唯一鍵被當做隱式主鍵,不能設置 不可見。mysql> alter table t2 alter index j_idx invisible;ERROR 3522 (HY000): A primary key index cannot be invisiblemysql>mysql> alter table t2 add primary key (i);Query OK, 0 rows affected (0.44 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> select index_name,is_visible from information_schema.statistics where table_schema=’test’ and table_name=’t2’;+------------+------------+| INDEX_NAME | IS_VISIBLE |+------------+------------+| j_idx | YES || PRIMARY | YES |+------------+------------+2 rows in set (0.01 sec)mysql> alter table t2 alter index j_idx invisible;Query OK, 0 rows affected (0.04 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> select index_name,is_visible from information_schema.statistics where table_schema=’test’ and table_name=’t2’;+------------+------------+| INDEX_NAME | IS_VISIBLE |+------------+------------+| j_idx | NO || PRIMARY | YES |+------------+------------+2 rows in set (0.01 sec)

force /ignore index(index_name) 不能訪問不可見索引,否則報錯。

mysql> select * from t2 force index(j_idx) where j=3;ERROR 1176 (42000): Key ’j_idx’ doesn’t exist in table ’t2’

設置索引為不可見需要獲取MDL鎖,遇到長事務會引發數據庫抖動

唯一索引被設置為不可見,不代表索引本身唯一性的約束失效

mysql> select * from t2;+---+----+| i | j |+---+----+| 1 | 1 || 2 | 2 || 3 | 3 || 4 | 4 || 5 | 5 || 6 | 6 || 7 | 7 || 8 | 11 |+---+----+8 rows in set (0.00 sec)mysql> insert into t2(j) values(11);ERROR 1062 (23000): Duplicate entry ’11’ for key ’t2.j_idx’

小結

其實沒啥說的,祝大家用的愉快。

-The End-

以上就是詳解MySQL 8.0 之不可見索引的詳細內容,更多關于MySQL 8.0 不可見索引的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
97精品视频在线观看自产线路二| 日韩欧美国产麻豆| 丁香啪啪综合成人亚洲小说| 成人黄色在线看| 国产色综合网| 欧美中文字幕一区二区三区| 欧美videofree性高清杂交| 亚洲另类一区二区| 久久99国产精品久久99果冻传媒| 国产乱对白刺激视频不卡| 欧美精品日本| 色域天天综合网| 国产亚洲成av人在线观看导航 | 亚洲精品免费电影| 激情婷婷欧美| 欧美日韩在线观看一区二区| 中文字幕久久午夜不卡| 日韩电影在线免费看| 国产成人精品免费看| 日韩午夜在线电影| 欧美一区二区三区免费视频| 亚洲欧洲韩国日本视频| 国产二区国产一区在线观看| 欧美精品色综合| 一二三区精品视频| 国产91精品久久久久久久网曝门| 国产欧美亚洲日本| 久久久久久日产精品| 久久精品国产成人一区二区三区 | 国产精品视频免费观看| 一个色综合av| 在线一区欧美| 午夜精品久久一牛影视| av不卡在线播放| 久久本道综合色狠狠五月| 久久久久久久综合色一本| 91在线视频网址| 国产精品二三区| 99精品国产一区二区三区不卡| 久久这里只有精品首页| 久草精品在线观看| 欧美一级黄色大片| 青草av.久久免费一区| 欧美特黄一区| 欧美一区二区三区视频免费| 处破女av一区二区| 久久久久久久久久久久久久久99| 欧美在线二区| 欧美一二区视频| aaa国产一区| 国产精品乱子久久久久| 成熟亚洲日本毛茸茸凸凹| 久久久久久久精| 亚洲精品影院| 免费成人深夜小野草| 7777精品伊人久久久大香线蕉最新版| 天天操天天综合网| 欧美日本一区二区| 日韩va欧美va亚洲va久久| 欧美日韩视频不卡| 不卡的电影网站| 中文字幕永久在线不卡| 蜜桃av一区| 亚洲最大成人网4388xx| 91久久精品日日躁夜夜躁欧美| 亚洲一二三四区| 国产一区二区三区电影在线观看| 免费在线一区二区| 国产精品中文字幕一区二区三区| 久久久激情视频| 国产欧美高清| 国产精品99久久久久久有的能看| 中文无字幕一区二区三区| 午夜在线一区| 国产激情视频一区二区三区欧美| 国产亚洲欧洲一区高清在线观看| 亚洲黄色一区| 国产精品成人网| 麻豆av一区二区三区久久| 狠狠久久亚洲欧美| 欧美日韩另类一区| 91女厕偷拍女厕偷拍高清| 精品乱人伦一区二区三区| 一区二区亚洲精品| 精品在线你懂的| 国产精品色婷婷| 色偷偷成人一区二区三区91| 成+人+亚洲+综合天堂| 亚洲欧美国产高清| 亚洲精品123区| 免费成人在线播放| 久久久久国色av免费看影院| 亚洲在线黄色| 亚洲成人手机在线| 亚洲影视综合| 国产jizzjizz一区二区| 一区二区三区四区高清精品免费观看 | 国产一区二区无遮挡| 国产精品视频一二三区| 色伊人久久综合中文字幕| 午夜国产精品视频免费体验区| 日韩精品乱码免费| 色婷婷国产精品综合在线观看| 成人午夜免费av| 婷婷久久综合九色综合绿巨人| 久久日一线二线三线suv| 免费在线一区二区| 欧美激情五月| 国产一区欧美日韩| 一区二区三区国产| 337p日本欧洲亚洲大胆精品 | 激情偷乱视频一区二区三区| 18欧美亚洲精品| 日韩一区二区电影| 99日韩精品| 成人av一区二区三区| 日韩成人dvd| 中文字幕在线不卡一区二区三区 | 国产精品制服诱惑| 欧美 日韩 国产 一区| 日韩电影在线观看电影| 国产精品美女久久久久久久久| 欧美日韩亚洲综合一区二区三区| 国产精品大片免费观看| 国产精品亚洲一区二区三区在线| 亚洲高清免费视频| 国产精品美女久久久久久| 51午夜精品国产| 玖玖精品视频| 久久99精品国产麻豆婷婷| 日韩一区在线看| 久久中文娱乐网| 6080国产精品一区二区| 色呦呦日韩精品| 99视频一区| 韩国亚洲精品| 99久久99久久精品国产片果冻| 狠狠色丁香久久婷婷综合_中| 一区二区三区日韩| 欧美国产视频在线| 日韩欧美亚洲国产精品字幕久久久| 久久久亚洲人| 亚洲乱亚洲高清| 欧美一区激情| 成人免费av资源| 激情综合一区二区三区| 五月激情丁香一区二区三区| 亚洲欧美一区二区在线观看| 26uuu亚洲婷婷狠狠天堂| 欧美精品高清视频| 欧美探花视频资源| 99re这里都是精品| 国产一区二区三区日韩 | 欧美日韩1区2区3区| 成人小视频免费在线观看| 蜜臀va亚洲va欧美va天堂| 精品99999| 国产精品视频福利| 黄色成人在线网站| 色综合网站在线| 五月综合激情网| 亚洲精品国产精华液| 亚洲人成影院在线观看| 亚洲欧洲另类国产综合| 国产精品国产三级国产三级人妇| 国产亚洲精品7777| 久久精品日产第一区二区三区高清版 | 懂色av一区二区三区免费看| 国产在线一区观看| 久久99精品视频| 蜜臀a∨国产成人精品| 日本va欧美va瓶| 日本最新不卡在线| 美女视频网站黄色亚洲| 美女网站视频久久| 看电影不卡的网站| 国产呦萝稀缺另类资源| 国产剧情一区在线| 国产在线看一区| 国内精品免费**视频| 美女国产一区二区三区| 蜜桃视频一区二区三区在线观看| 日韩在线一区二区| 日本三级亚洲精品| 久久精品国产一区二区三| 国产美女娇喘av呻吟久久| 丰满亚洲少妇av| 99re这里只有精品视频首页| 欧美成人日韩| 亚洲第一网站| 成人精品免费看| 国产成人综合在线观看| 成人国产精品免费网站| youjizz久久| 99久久伊人网影院| 99久久精品免费看国产免费软件| 99国产精品久久久久久久久久| 色综合一个色综合| 黄色欧美日韩| 亚洲欧美日韩国产一区二区|