Linux下mysql讀寫速度為什麼很慢?

更新:換了ssd之後速度不慢了……確實是硬體問題。

————————————

最近在用python寫一個研究用的模擬程序,要產生很多數據,存在mysql里。之前用mac跑,覺得太慢,換到了台式機上,發現雖然運算速度是原來的兩倍多,但向mysql存儲的速度非常非常慢,導致總運行時間跟原來差不多了。而且,後來發現從mysql里刪除數據的速度更慢,差不多1G的數據要刪半小時。。

當然,mac是固態硬碟,linux的台式機是機械硬碟,但速度也不能差這麼多吧?昨天又測試了一下,發現linux下mysql刪一張表要0.1s,mac下是0.003s。雖然只是隨便一測,表的大小不完全一樣(大小沒有數量級的差距),但儘管如此,再考慮固態硬碟和機械硬碟的差別,能解釋超過30倍差距的刪除速度嗎?

求解釋和調整辦法(除了換ssd,因為已經買了準備裝),謝謝!


題主你好,我是林納斯。請把你家地址告訴我。


linux這鍋背得真冤


感覺是硬體問題。


尋道時間的差距本來也不止30倍吧?

何況ssd的調度演算法實際上會用noop, 但是hdd下各種複雜的IO調度演算法會加大寫入延遲.

既然已經買了ssd, 還是等裝上ssd調優之後再測試吧.


你問了兩本書。

一本Linux,一本Mysql。

花兩年時間去熟悉它們,你就知道為什麼你這麼做會導致很慢,以及該怎麼做才能加速。


看上去這是個偽命題。

首先不清楚這裡的「Linux下mysql讀寫速度」是和什麼環境來對比?Windows?Mac OS X?暫且不說是否命題成立吧。

讀寫速度主要的影響來自於存儲介質,也就是大家說的磁碟,然後是文件系統。

從文件系統角度來說,同樣的硬體介質,雖然也會有一些差異,並不會產生數量級區別的本質上的性能區別。

不同的硬體介質,會產生數量級差異,比如機械磁碟與SSD之間可能存在10倍100倍甚至1000倍的性能差異,SSD與內存之間同樣也會有數量級的性能差異。


最近遇到一個mysql讀寫超慢的問題,查到io非常高。再追下去發現是ext4的bug導致jbd佔用了大量的io,於是一切都慢了下來。

所以,題主你是不是在用linux下片兒?


ssd的4k速度本來就不止比機械快30倍。別忘了,機械硬碟只能同時讀取一個數據。


加了多少索引?加了多少外鍵約束?


……老東家嘗試過把mysql伺服器硬碟從機械改成ssd的,業務分析時讀速度大概是200m/s,以前大概是20m/s,然後要考慮到容量限制~

可以考慮阿里雲或者ucloud,有提供ssd的雲伺服器,速度還好

※※※※※※※※※※※※※※※※※※※※※※

刪除1g數據需要這麼久嗎?你有加索引或者優化mysql緩存嗎?還是你的數據存在好多個table里?還是刪除的時候加了where


推薦閱讀:

有哪些適合舊電腦且對新手友好的Linux發行版?
Linux 學習歷程 ?
在Linux下工作的程序員們,你們犯過什麼可怕的錯誤或誤操作?本人刪除過/usr目錄?
新手入門應如何選擇 ARM 開發板?

TAG:資料庫 | MySQL | Linux | Linux入門 |