当前位置:网站首页>Talking about MySQL index
Talking about MySQL index
2022-07-05 22:00:00 【The sea of waves】
List of articles
- Talking about MYSQL Index performance
- The essence of index
- myIsam Storage engine index
- innodb Storage engine index
- ( Interview questions ) Why suggest Innob A table must have a primary key , And it is recommended to use the auto increasing primary key of integer type
- ( Interview questions ) Compared with storing row pointers in leaf nodes , The secondary index will take up more space to store the primary key value , Then why do we design it like this ?
- ( Interview questions ) that InnoDB With clustering index , Why should there be a secondary index ?
- mysql Explanation of the leftmost prefix optimization principle
Talking about MYSQL Index performance
The essence of index
Index is help MYSQL A well ordered data structure for efficient data acquisition .
Index data structure
- Binary tree It will become a linear linked list , Low efficiency
- Red and black trees When there is a large amount of data ,IO Low disk efficiency
- hash surface
- Evaluation of index key Do it once. hash Calculation can locate the location of data storage
- A lot of time Hash Index is better than B+ Tree indexing is more efficient
- Can only satisfy “=”,“IN”, Range query is not supported
- hash The question of conflict
B-tree
Leaf nodes have the same depth , The pointer to the leaf node is null
All index elements are not duplicate
The data indexes in the node are incrementally arranged from left to right
B+tree
- Non leaf nodes do not store data, Store index only , More indexes can be placed
- The leaf node contains all index fields
- The leaf node is connected with a pointer , Improve the performance of interval access , Support range lookup (20<col<50)
- The height is about 3 To 4, Leaf nodes can store 2kw An index
lookup 30 The process of this element , First load the root node into memory , According to the idea of binary search, we can find 15~56 The index of this piece
Then according to the idea of binary search Find the 20~49 This index , Finally find 30 This element .
myIsam Storage engine index
The data in the table is stored on disk . Each row of data has a disk file address
All elements in the table are stored in files .
frm file : Definition and structure of table
MYD file : Table all data
MYI file : Table all indexes
innodb Storage engine index
frm file : Definition and structure of table
ibd file : Table data and index , Disk read ahead , The data near the searched records will be queried .
Clustered index : The leaf node contains the index and other data fields of the row
Nonclustered indexes : Search across multiple files according to the index , such as myIsam In the storage engine , Need from MYI File to MYD file Find data in ( Also called return table )
Secondary index : The leaf node stores the primary key value , Every time you look up data , Find the primary key value in the leaf node according to the index , According to the primary key value, we can get a complete row of records in the cluster index
Joint index : Union index is also called compound index . For composite indexes :Mysql Use the fields in the index from left to right , A query can use only a part of the index , But only the far left part . For example, the index is key index (a,b,c). Can support a | a,b| a,b,c 3 Combination of search , But does not support b,c Search for . When the leftmost field is a constant reference , The index is very efficient .
( Interview questions ) Why suggest Innob A table must have a primary key , And it is recommended to use the auto increasing primary key of integer type
If not built , The database will automatically find a column of unique data as the primary key index , If no unique data is found , Will build a fake hidden column , This will cause mysql Resources are tight , Bring a great burden .
Integer index and string or UUID Compared with , More efficient , Take up less space .
Auto increment :UUID Not auto increment , There may be node splitting , It is efficient to build nodes without self increment .
( Interview questions ) Compared with storing row pointers in leaf nodes , The secondary index will take up more space to store the primary key value , Then why do we design it like this ?
InnoDB When moving rows , There is no need to maintain a secondary index , Because the leaf node stores the primary key value , Instead of Pointers .
( Interview questions ) that InnoDB With clustering index , Why should there be a secondary index ?
The leaf node of the cluster index stores a row of complete data , The secondary index only stores the primary key value , Compared with clustered index , Take up less space . When we need to build multiple indexes for a table , If they are clustered indexes , That will take up a lot of memory space , therefore InnoDB The primary key in is a clustered index , And the only index 、 General index 、 Prefix indexes are secondary indexes .
mysql Explanation of the leftmost prefix optimization principle
Skip in composite index name after ,age Is chaotic , So a full scan will be performed .
The list of articles to be completed later
- Business
- MVCC
- lock
- Sub database and sub table
There is something wrong , Welcome to the discussion .
Last , Welcome to pay attention to my wechat , What do you like , Collection , Forwarding is my greatest encouragement .
边栏推荐
- EBS Oracle 11g cloning steps (single node)
- Detailed explanation of memset() function usage
- Recovery technology with checkpoints
- Codeforces 12D Ball 树形阵列模拟3排序元素
- Shell script, awk uses if, for process control
- 如何向mongoDB中添加新的字段附代码(全)
- Oracle HugePages没有被使用导致服务器很卡的解决方法
- 2.2.3 output of documents
- Decorator learning 01
- MATLAB | App Designer·我用MATLAB制作了一款LATEX公式实时编辑器
猜你喜欢
每日刷题记录 (十四)
Blocking protocol for concurrency control
Matlab | app designer · I used Matlab to make a real-time editor of latex formula
Performance monitoring of database tuning solutions
Getting started with microservices (resttemplate, Eureka, Nacos, feign, gateway)
Lightweight dynamic monitorable thread pool based on configuration center - dynamictp
An exception occurred in Huawei game multimedia calling the room switching method internal system error Reason:90000017
怎么利用Tensorflow2进行猫狗分类识别
Exercise 1 simple training of R language drawing
Bitbucket installation configuration
随机推荐
Analysis and test of ModbusRTU communication protocol
About the writing method of SQL field "this includes" and "included in" strings
Matlab | app designer · I used Matlab to make a real-time editor of latex formula
Advantages of robot framework
Basic grammar of interview (Part 1)
[Yugong series] go teaching course in July 2022 004 go code Notes
Multiplexing of Oracle control files
Serializability of concurrent scheduling
Livelocks and deadlocks of concurrency control
The solution to the problem that Oracle hugepages are not used, causing the server to be too laggy
Official clarification statement of Jihu company
QML reported an error expected token ";", expected a qualified name ID
crm创建基于fetch自己的自定义报告
从零开始实现lmax-Disruptor队列(四)多线程生产者MultiProducerSequencer原理解析
Gcc9.5 offline installation
极狐公司官方澄清声明
每日刷题记录 (十四)
Daily question brushing record (XIV)
[Yugong series] go teaching course 003-ide installation and basic use in July 2022
2.2 basic grammar of R language