最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

索引與算法(INnoDB存儲(chǔ)引擎)

2022-08-31 07:48 作者:大濤先生_  | 我要投稿


image-20220831073828336

索引與算法

InnoDB存儲(chǔ)引擎支持&常見索引

  1. B+樹索引

  2. 全文索引

  3. hash索引

B+ 樹索引不能給具體行數(shù)據(jù),索引只能找到行所在的頁,讀到內(nèi)存之后,再進(jìn)行查找


mysql5.5之前(不包括5.5)增加索引流程

  1. 創(chuàng)建臨時(shí)表

  2. 原始數(shù)據(jù)導(dǎo)入臨時(shí)表

  3. 刪除原表

  4. 修改臨時(shí)表為原來表名

缺點(diǎn):大表的索引添加修改,需要很長(zhǎng)時(shí)間,且修改時(shí)間內(nèi)數(shù)據(jù)庫不可用


InnoDB1.0.x解決了這個(gè)痛點(diǎn)問題

解決方案:引入FIC(快速索引創(chuàng)建)

  1. 創(chuàng)建索引的表上增加S鎖(不需要重建表)

  2. 添加S鎖期間,只能讀操作

  3. 刪除索引,只需要存儲(chǔ)引擎更新內(nèi)部視圖,將輔助索引標(biāo)記為可用

  4. FIC 僅限于輔助索引,主鍵操作依舊需要重建表


OSC(在線架構(gòu)改變)

Online DDL

FIC 可以避免InnoDB創(chuàng)建臨時(shí)表,提高索引創(chuàng)建的效率,但是會(huì)阻塞DML,OSC也沒有完美解決這個(gè)問題,mysql5.6開始支持Online DDL

  1. 輔助索引的創(chuàng)建與刪除

  2. 改變自增長(zhǎng)

  3. 添加或者刪除外鍵約束

  4. 列的重命名

MRR(減少磁盤隨機(jī)訪問,轉(zhuǎn)化為相對(duì)有序的訪問)

  1. mysql 5.6開始支持MRR

  2. 適用范圍 range ref eq_ref

  3. 優(yōu)勢(shì)

    1. 使數(shù)據(jù)訪問相對(duì)有序,查詢輔助索引時(shí),根據(jù)查詢結(jié)果按照主鍵排序,按照主鍵排序順序進(jìn)行查找

    2. 減少緩沖池中頁被替換的次數(shù)

    3. 批量處理對(duì)鍵值對(duì)的查詢操作

  4. MRR工作原理

    1. 查詢得到的輔助索引放到緩存里面(根據(jù)輔助索引鍵值對(duì)排序)

    2. 緩存中鍵值對(duì)按照RowID排序

    3. 根據(jù)RowID排序順序?qū)嶋H訪問數(shù)據(jù)文件

    4. 緩沖池不夠大的時(shí)候 MRR會(huì)失效

ICP(根據(jù)索引進(jìn)行查詢的優(yōu)化模式)

  1. mysql5.6之后開始支持

  2. ICP工作原理

    1. 根據(jù)索引查找記錄,然后直接根據(jù)where條件過濾數(shù)據(jù)(過濾數(shù)據(jù)操作在引擎層操作)

  3. ICP使用范圍:

    1. myidsam引擎&InnoDB引擎

    2. 支持 range,ref,eq_ref,ref_or_null類型查詢

哈希算法

哈希表(散列表)

  1. 解決hash碰撞采用鏈表法

InnoDB存儲(chǔ)引擎的哈希算法

自適應(yīng)哈希索引

  1. DBA無法干預(yù)

  2. 只能用來搜索等值查詢


全文檢索

  1. InnoDB引擎1.2.x支持,myisam支持

  2. InnoDB存儲(chǔ)全文檢索索引限制

    1. 每張表只能有一個(gè)全文索引的索引

    2. 多列組合而成的全文索引的索引列必須使用相同的字符集和排列規(guī)則

    3. 不支持沒有單詞界定符的語言(中文,日文,韓語)

倒排索引

  1. 輔助表存儲(chǔ)單詞與單詞自身在的一個(gè)或者多個(gè)所在位置的映射

    1. 位置存儲(chǔ)的是位置數(shù)組


索引與算法(INnoDB存儲(chǔ)引擎)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
镇江市| 那曲县| 镇江市| 无棣县| 南川市| 普宁市| 安化县| 武城县| 高密市| 依兰县| 深泽县| 迭部县| 理塘县| 安义县| 涿鹿县| 类乌齐县| 台山市| 连城县| 交口县| 卢龙县| 乌恰县| 桃江县| 凌源市| 志丹县| 怀远县| 留坝县| 环江| 安阳市| 静海县| 西乡县| 鸡西市| 昆明市| 泽州县| 老河口市| 杭锦旗| 田东县| 道真| 合肥市| 蕲春县| 龙陵县| 海原县|