2012-07-27 102 views
0

在具有多個表的MySQL數據庫中,是否受同一數據庫中所有其他表的大小影響的表上的查詢運行時間?受其他表大小影響的表的MySQL速度?

+0

其受插入和更新的同一表的大小的影響。但其他桌子?我不確定。只有插入,更新,選擇使用「其他表」我猜 – nawfal 2012-07-27 21:12:17

回答

2

我只能想到其他表可能會對查詢產生兩種影響,假設這些表未包含在查詢中,沒有其他查詢正在運行,並且沒有鏈接表的約束或觸發器。

第一個效果是在編譯階段。在此階段,SQL解析器從元數據表中獲取有關表和列的信息。數據庫中的更多表和列可能會減慢查詢的編譯速度。

其他影響是頁表和磁盤碎片。如果你有一個乾淨的系統並開始分配和填充頁面,那麼頁面可能會填充磁盤上的連續頁面(不保證,但可能)。在訪問時,操作系統可能預先獲取與請求頁面相鄰的物理頁面。在我描述的環境中,這個預取數據可能會用在查詢中。

在具有多個表的數據庫中,磁盤碎片的可能性大得多。在這種情況下,預取硬件頁面不太可能用於查詢中的相同表格。這意味着它們沒有被使用,所以需要額外的I/O請求來獲得下一頁。

我已經在磁盤碎片方面描述了這一點,但頁面本身可能會發生類似的情況。存儲表格數據的物理頁面可能不是連續的,具有相似的結果。

碎片可能是數據庫的問題。事實上,無論數據庫中有多少表,它都可能成爲問題。但是更多的表格具有更多的插入/刪除活動往往會增加碎片。但是,這些影響通常很小,只會在某些極端情況下導致性能顯着下降。

+0

磁盤碎片和I/O緩存問題更多地關聯到相同的服務器,而不是相同的數據庫,但他們仍應該考慮。不確定同一服務器上的不同數據庫是否會在查詢編譯和規劃時影響性能。 – Vatev 2012-07-28 00:58:10

1

有許多表(和數據)只需要一個硬盤空間。

處理速度取決於您執行的表優化和大小+查詢,而不是整個數據庫。

1

查詢運行時可能會受到各種服務器環境問題的影響,因此,雖然可以說在數據庫中具有其他大型表並不會影響無關表上查詢的速度,實際情況是,這些表格可能也會被查詢並消耗服務器資源。這當然會影響您的查詢速度。

1

它應該只是一個問題,如果該表(大)與其他表與一些連接(外鍵約束將是一個例子)相關...否則你的表應該獨立行爲。也就是說,如果你有一張表如此龐大以至於造成速度問題,那麼你可能需要找到其他解決方案來將一些數據重構爲更小的子集。

相關問題