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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysql分区对大表查询效率的影响

發布時間:2024/4/17 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql分区对大表查询效率的影响 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本實驗主要測試在沒有任何索引的情況下分區對大表查詢效率的影響

實驗環境:

rhel 6.5

mysql5.5.58

表結構

1 mysql> show create table users\G 2 *************************** 1. row *************************** 3 Table: users 4 Create Table: CREATE TABLE `users` ( 5 `id` int(10) unsigned NOT NULL, 6 `name` varchar(32) NOT NULL DEFAULT '', 7 `age` int(10) unsigned DEFAULT NULL, 8 `email` varchar(32) NOT NULL DEFAULT '', 9 `account` varchar(64) NOT NULL DEFAULT '', 10 `address` varchar(64) NOT NULL DEFAULT '' 11 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 12 1 row in set (0.00 sec)

表中的數據有10000000記錄

1 mysql> select count(*) from users; 2 +----------+ 3 | count(*) | 4 +----------+ 5 | 10000000 | 6 +----------+ 7 1 row in set (0.09 sec)

首先隨便選取一條記錄查詢,看看mysql服務器需要的時間

1 mysql> select * from users where id=2478945; 2 +---------+------------------+------+--------------------------+------------------+---------------------------------------------------+ 3 | id | name | age | email | account | address | 4 +---------+------------------+------+--------------------------+------------------+---------------------------------------------------+ 5 | 2478945 | Nina Oberbrunner | 8 | beatty.martina@gmail.com | 6579978004257241 | 99802 Dietrich Mountain 6 New Pinkie, WA 66024-5962 | 7 +---------+------------------+------+--------------------------+------------------+---------------------------------------------------+ 8 1 row in set (18.25 sec)

很顯然該查詢進行了全表掃描

1 mysql> explain select * from users where id=2478945 \G 2 *************************** 1. row *************************** 3 id: 1 4 select_type: SIMPLE 5 table: users 6 type: ALL 7 possible_keys: NULL 8 key: NULL 9 key_len: NULL 10 ref: NULL 11 rows: 10000000 12 Extra: Using where 13 1 row in set (0.04 sec)

現在對大表進行分區

1 mysql> alter table users partition by hash(id) partitions 5; 2 Query OK, 10000000 rows affected (37.24 sec) 3 Records: 10000000 Duplicates: 0 Warnings: 0

測試一下在沒有建任何索引的情況下,對大表進行分區是否會影響查詢的速度

1 mysql> select * from users where id=2478945; 2 +---------+------------------+------+--------------------------+------------------+---------------------------------------------------+ 3 | id | name | age | email | account | address | 4 +---------+------------------+------+--------------------------+------------------+---------------------------------------------------+ 5 | 2478945 | Nina Oberbrunner | 8 | beatty.martina@gmail.com | 6579978004257241 | 99802 Dietrich Mountain 6 New Pinkie, WA 66024-5962 | 7 +---------+------------------+------+--------------------------+------------------+---------------------------------------------------+ 8 1 row in set (2.36 sec)

可以看到查詢同一條記錄從開始的18.25s變為2.36秒,說明分區對大表查詢有一定的優化
查詢過程和上面一樣,進行全表掃描,但是分區后數據文件變小,掃描的行數變為2000000,提高了速度

1 mysql> explain select * from users where id=2478945 \G 2 *************************** 1. row *************************** 3 id: 1 4 select_type: SIMPLE 5 table: users 6 type: ALL 7 possible_keys: NULL 8 key: NULL 9 key_len: NULL 10 ref: NULL 11 rows: 2000000 12 Extra: Using where 13 1 row in set (0.06 sec)

分區后,每個分區數據文件是200多兆,沒分區時一個文件1G多

1 [root@localhost test]# pwd 2 /usr/local/mysql/data/test 3 [root@localhost test]# ll -h 4 total 1.1G 5 -rw-r--r-- 1 mysql mysql 65 9月 13 23:20 db.opt 6 -rw-rw---- 1 mysql mysql 8.6K 11月 26 22:39 users.frm 7 -rw-rw---- 1 mysql mysql 40 11月 26 22:39 users.par 8 -rw-rw---- 1 mysql mysql 221M 11月 26 22:40 users#P#p0.MYD 9 -rw-rw---- 1 mysql mysql 1.0K 11月 26 22:40 users#P#p0.MYI 10 -rw-rw---- 1 mysql mysql 221M 11月 26 22:40 users#P#p1.MYD 11 -rw-rw---- 1 mysql mysql 1.0K 11月 26 22:40 users#P#p1.MYI 12 -rw-rw---- 1 mysql mysql 221M 11月 26 22:40 users#P#p2.MYD 13 -rw-rw---- 1 mysql mysql 1.0K 11月 26 22:40 users#P#p2.MYI 14 -rw-rw---- 1 mysql mysql 221M 11月 26 22:40 users#P#p3.MYD 15 -rw-rw---- 1 mysql mysql 1.0K 11月 26 22:40 users#P#p3.MYI 16 -rw-rw---- 1 mysql mysql 221M 11月 26 22:40 users#P#p4.MYD 17 -rw-rw---- 1 mysql mysql 1.0K 11月 26 22:40 users#P#p4.MYI 18 [root@localhost test]#

?

轉載于:https://www.cnblogs.com/iaknehc/p/7900960.html

總結

以上是生活随笔為你收集整理的Mysql分区对大表查询效率的影响的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。