Mysql index
-
Upload
yuan-yao -
Category
Technology
-
view
1.122 -
download
1
Transcript of Mysql index
![Page 1: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/1.jpg)
MySQL IndexAndy Yao
Friday, December 30, 11
![Page 2: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/2.jpg)
MySQL Basic
Friday, December 30, 11
![Page 3: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/3.jpg)
MySQL Architecture
Friday, December 30, 11
![Page 4: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/4.jpg)
Storage Engine: MyISAM
Table lock
No automated data recovery
No transactions
Only indexes are cached in memory
Compact storage
Friday, December 30, 11
![Page 5: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/5.jpg)
Storage Engine: InnoDB
Transactional
Foreign keys
Multiversioning
Clustered by primary key
No cached count(*)
Blocking AUTO_INCREMENT
Optimized cache
Friday, December 30, 11
![Page 6: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/6.jpg)
InnoDB Storage Architecture Tablespaces
leaf node segment
non-leaf node segment
rollback node segment
Segment
extent
extent
extent
extent
...
Extent
row row
row row
...
PageRow
trx id
row id
roll pointer
col 1 col n... 64 pages
Friday, December 30, 11
![Page 7: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/7.jpg)
InnoDB and File system
File system -‐> InnoDB -‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐ disk partition -‐> tablespace file -‐> segment inode -‐> fsp0fsp.c 'inode' fs space allocation unit -‐> extent disk block -‐> page (16 kB)
Friday, December 30, 11
![Page 8: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/8.jpg)
Types of Indexes
Friday, December 30, 11
![Page 9: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/9.jpg)
Types of Indexes
B+Tree indexes
Hash indexes
R-Tree indexes
Full-text indexes
Friday, December 30, 11
![Page 10: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/10.jpg)
B+Tree Indexes
Friday, December 30, 11
![Page 11: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/11.jpg)
Binary search tree
2
3
5
7
6 8
2
3
6
7
85
Binary search tree AVL tree
Friday, December 30, 11
![Page 12: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/12.jpg)
B Tree
25 50 75 ...
5 10 15 20 25 30 50 55 60 65 75 80 85 90
Friday, December 30, 11
![Page 13: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/13.jpg)
B+Tree
25 50 75 ...
5 10 15 20 25 30 50 55 60 65 75 80 85 90
Friday, December 30, 11
![Page 14: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/14.jpg)
B+Tree Indexes
Friday, December 30, 11
![Page 15: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/15.jpg)
B+tree indexes: Demo
CREATE TABLE People (last_name varchar(50) not null,first_name varchar(50) not null,dob date not null,gender enum('m', 'f') not null,
key(last_name, first_name, dob) );
Friday, December 30, 11
![Page 16: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/16.jpg)
B+tree indexes: Demo
Friday, December 30, 11
![Page 17: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/17.jpg)
B+Tree: Types of queries
Match the full value
where last_name=? and first_name=? and bod=?
Match a leftmost prefix
where last_name=?
where last_name=?
Friday, December 30, 11
![Page 18: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/18.jpg)
B+Tree: Types of queries
Match a column prefix
where last_name like ”Liang%”
Match a range of values
where last_name > ?
Friday, December 30, 11
![Page 19: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/19.jpg)
B+Tree: Types of queries
Match one part exactly and match a range on another
where last_name=? and first_name>?
Index only queries
select first_name where last_name=?
Friday, December 30, 11
![Page 20: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/20.jpg)
B+Tree: Limitations
Doesn’t start from leftmost
where first_name=?
Skip columns in the index
where last_name=? and bod=?
Friday, December 30, 11
![Page 21: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/21.jpg)
B+Tree: Limitations
More than one range conditions
where last_name>? and first_name>?
Can’t optimize to the right of the first range conditon
where last_name>? and first_name=?
Friday, December 30, 11
![Page 22: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/22.jpg)
Clustered Index
Friday, December 30, 11
![Page 23: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/23.jpg)
Clustered Index
Non Clustered
Clustered
Index organized table
Heap table
Friday, December 30, 11
![Page 24: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/24.jpg)
Friday, December 30, 11
![Page 25: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/25.jpg)
Useful Commands
Friday, December 30, 11
![Page 26: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/26.jpg)
Useful commands
show index from TABLE;
explain [extended] SELECT * FROM TABLE;
UPDATE, DELETE convert to SELECT
Friday, December 30, 11
![Page 27: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/27.jpg)
Explain
select_tpe
simple, primary, subquery, derived, union
type
all < index < range < ref < eq_ref < const, system < null
Friday, December 30, 11
![Page 28: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/28.jpg)
Explain
Extra
using where
using index
using filesort
using temporary
Friday, December 30, 11
![Page 29: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/29.jpg)
Indexing Strategies
Friday, December 30, 11
![Page 30: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/30.jpg)
Indexing Strategies
Isolate the column
Prefix Indexes and Index Selectivity
Covering Indexes
Use Index Scan For Sorts
Friday, December 30, 11
![Page 31: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/31.jpg)
Isolate the column
where last_name=”Fred”
where a+1=5
where md5(a)=”45c48cce2e2d7fbdea1afc5”
Friday, December 30, 11
![Page 32: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/32.jpg)
Prefix index & Index selectivity
Prefix index
KEY index_on_sum(`sum`(5))
Index Selectivity
Cardinality/Count(*)
0..1
Friday, December 30, 11
![Page 33: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/33.jpg)
Covering Index
select first_name from people where last_name=”fred”
Extra: Using index
Not support “Like” in query
Friday, December 30, 11
![Page 34: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/34.jpg)
Using Index for Sorts
select * from people where last_name=? and first_name =? order by dob
Friday, December 30, 11
![Page 35: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/35.jpg)
Redundant/Duplicate index
Duplicate
primary key(id)
key(id)
unique(id)
Redundant
key(a, b, c)
key(a, b)
key(a)
key(b, a)
Friday, December 30, 11
![Page 36: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/36.jpg)
Others
Index merge
Or
Sub-query/Join/Union
Group/Order
Locking
Query optimization
Friday, December 30, 11
![Page 37: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/37.jpg)
References
http://www.mysqlperformanceblog.com/
http://www.percona.com/
Friday, December 30, 11
![Page 38: Mysql index](https://reader033.fdocuments.in/reader033/viewer/2022052823/55509a35b4c9058b208b4873/html5/thumbnails/38.jpg)
Questions?
Friday, December 30, 11