工作中遇到的乙個實際問題。
問題如下:
長時間,大量插入資料的速度慢的問題。
7*24小時的不間斷想資料庫中插入資料,單錶的插入資料量平均目前平均35條/秒。有
40多個單表表都需要插入。插入資料的同時還要對40多個單錶進行更新和查詢操作。
如此頻繁的對資料庫進行操作的情況下,資料庫的速度已經不能滿足我們的需求了。
經過了一系列的sql文,記憶體設定,快取設定之後還是無法滿足。
最後經過在linux下top進行分析,發現原來是orcale的i/o讀寫速度問題。並且硬碟處
理速度不及時還導致cpu %wa等待。
經過統計情況如下:
插入量:40*35=1400條/秒
查詢量:40*100=4000條/秒
更新量:40*10=400條/秒
刪除量:1400*66%=900條/秒
每秒處理共約:6700條資料。
這樣乙個int佔4個位元組,乙個double佔8個位元組,乙個varchar(200)佔200個位元組.....
一條資料有 800~1400個位元組 按照平均一條資料1024個位元組來算,就是1條資料占用
1kb的空間。
那麼硬碟最少要有6700*1kb =6.7m 的讀寫速度。本來我們用的硬碟是7200的,極限的
讀寫速度是30m-40m/秒左右,為什麼6.7m左右就承受不住了呢?
經過分析認為,硬碟的測試速度只是單一的讀寫。但是在頻繁的讀寫刪除面前遠遠達不到那個速度(磁頭不停的切換,扇區不停的反轉)
注意:這裡請不要長生誤區:6.7m是每秒的讀寫速度,由於我做了優化每秒還會刪除插入資料的66%,這樣最後儲存到磁碟的每秒只有400k左右。
一天40g的資料 平均每秒400多k。
解決方案:表分割槽 + 磁碟陣列 + raid0. 理論上能提高幾十倍甚至幾百倍的速度。
具體實現細節。。。略。。。。。。。
關於資料庫讀取速度與檔案IO讀取速度的比較分析
最近看到了這個很有意思的問題,以前也沒有思考過。如果有人問,到底是在 中跟 io檔案交換速度快,還是跟資料庫交換速度快呢?這個問題還是比較複雜的,資料庫的儲存資料方式要比單純的檔案儲存複雜很多。其實,如果我們熟悉資料庫的結構,那麼很容易解決這個問題。簡單的來講,乙個執行的資料庫例項是由兩部分組成的,...
python之mysql資料庫讀取
首先我們先安裝讀取mysql的第三方庫 pip install pymysql 安裝成功後,我們穿件乙個.py檔案import pymysql 我們先看看pymysql給我們提供了什麼 跳轉到 init 介面 然後跳轉到這個介面,可以看到注釋給我們說明各個引數的用途,再移動下去 就可以看到mysql...
Python讀取mysql資料庫資料出現中文亂碼
python連線mysql資料庫時,讀取資料庫中的中文出現亂碼,所有中文都顯示為問號了,我解決問題的步驟如下 開發環境 python版本 python3.6 mysql版本 mysql 5.5.56 winx64 pymysql 版本 pymysql 0.7.11 執行pip install pym...