面對億級資料,MySQL硬的起來麼?

2021-10-09 07:32:32 字數 2468 閱讀 8338

很多粉絲問我:mysql到底能支撐多少資料,是不是500萬以上就不行了,查詢就非常慢了?

這個問題問得好。到底行不行呢?

我覺得還是得通過實驗來見證一下,mysql面對百萬、千萬、億級別的資料時,查詢到底行不行???

建立表test1

test1表,結構比較簡單,2個字段,都有索引。

drop table if exists test1;

create table test1(

id int primary key comment '編號' auto_increment,

order_num bigint comment '訂單號'

)comment '使用者表';

/*order_num分別加索引*/

create index idx1 on test1(order_num);

插入1億資料

@test

public void test1() throws sqlexception, classnotfoundexception }}

無條件查詢(耗時24秒)

耗時20多秒,如果給使用者用,這個肯定是無法接受的。

mysql> select count(*) from test1;

+-----------+

| count(*)  |

+-----------+

| 100000000 |

+-----------+

1 row in set (23.95 sec)

走索引查詢(耗時1毫秒)

order_num 字段上面有索引,我們插入的時候,order_num 這個欄位的值沒有重複的。

用這個字段查詢一下看看效果,耗時1毫秒,快不快,你們說???

select * from test1 where order_num = 9999999;
走索引,範圍查詢(耗時1毫秒)

select * from test1 where order_num >= 1000000 and order_num<= 1000010;
結論不走索引,查詢,這個基本上用不了,等著使用者罵你吧。

走索引,毫秒級響應,1億資料根本不是問題,即使是10億資料,速度也差不多,大家可以試試。

建立test2表

test2有3個字段,後面2個字段分別加了索引。

drop table if exists test2;

create table test2(

id int primary key comment '編號' auto_increment,

user_id bigint comment '使用者id',

order_num bigint comment '訂單號'

)comment '使用者表';

/*user_id、order_num分別加索引*/

create index idx1 on test2(user_id);

create index idx2 on test2(order_num);

插入1億資料

100萬user_id,每個user_id下面關聯100個order_num,共1億資料

@test

public void test2() throws sqlexception, classnotfoundexception 

if (count % 10000 == 0) }}

無條件查詢(耗時18秒)

mysql> select count(*) from test2;

+-----------+

| count(*)  |

+-----------+

| 100000000 |

+-----------+

1 row in set (18.36 sec)

查詢某個使用者的資料(耗時1毫秒)

select * from test2 where user_id = 100000;
查詢出來了100條資料,耗時也就1毫秒。

mysql面對億級別的資料到底行不行呢?看看上面的資料,不用我說了吧

mysql資料量上去之後,比如千萬,億級別,如果不走索引,去查詢,這個肯定是用不成的,使用者是無法接受的。

mysql資料量大了,千萬,億級別,查詢的時候,帶上條件,並且條件必須得走索引,那麼速度是飛快的,毫秒級別的。

mysql億級資料遷移

背景 mysql5.6 分庫分表 跨資料庫例項,要求線上遷移 切換功能 檢視各資料庫占用磁碟空間大小 select table schema,concat truncate sum data length 1024 1024,2 mb as data size,concat truncate sum...

mysql儲存及查詢億級資料

1.基本方法 1.1.正確設計索引 1.2.避免全表掃瞄 1.3.避免limit 100000000,20這樣的查詢 1.4.避免left join之類的查詢,不要將這樣的邏輯處理交給資料庫 1.5.每個表的鍵不要太多,大資料時會增加資料庫的壓力 2.資料表優化 2.1.採用分表技術 大表分小表 1...

使用Python Pandas處理億級資料

在資料分析領域,最熱門的莫過於python和r語言,此前有一篇文章 別老扯什麼hadoop了,你的資料根本不夠大 指出 只有在超過5tb資料量的規模下,hadoop才是乙個合理的技術選擇。這次拿到近億條日誌資料,千萬級資料已經是關係型資料庫的查詢分析瓶頸,之前使用過hadoop對大量文字進行分類,這...