Linux下mysql讀寫速度為什麼很慢?
01-12
更新:換了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 開發板?