簡體   English   中英

MySQL一對多表的性能

[英]MySQL Performance of one vs. many tables

我知道MySQL通常會處理很多行的表。 但是,我目前面臨一個設置,其中一個表將由多個用戶(大約10個)同時讀取和寫入,並且該表很可能包含100億行。

我的設置是帶有InnoDB存儲引擎的MySQL數據庫。

我有一些項目的核心,那些大小的表會變得效率低,速度慢,也與索引有關。

我不喜歡讓多個表具有完全相同的結構只是為了分割行。 主要問題 :但是,這不能解決由於如此大量的行而導致性能下降的問題嗎?

附加問題 :如果使用如此大的表,我還能做些什么? 行數本身不可減少。

我聽說過一些項目,那些大小的表會變得效率低,速度慢,也與索引有關。

這不典型。 只要您的表格按照您使用它們的方式進行了適當的索引,即使對於非常大的表格,性能也應該保持合理。

(隨着BTREE索引的深度增加,索引性能略有下降,但這種影響實際上可以忽略不計。此外,可以通過在索引中使用較小的鍵來減輕它,因為這可以最小化樹的深度。)

在某些情況下,更合適的解決方案可能是對表進行分區 這在內部將您的數據划分為多個表,但將它們公開為可以正常查詢的單個表。 但是,分區會對表的索引方式提出一些特定要求,並且本身並不會提高查詢性能。 通過從按日期分區的表中刪除舊分區,允許一次從表中刪除大量舊數據非常有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM