導航:首頁 > 數據處理 > 寫資料庫寫文件哪個快

寫資料庫寫文件哪個快

發布時間:2022-04-28 01:00:26

1. mysql 比文件存儲哪個快

mysql更快。
1、直接讀文件相比資料庫查詢效率更勝一籌,而且文中還沒算上連接和斷開的時間。
2、一次讀取的內容越大,直接讀文件的優勢會越明顯(讀文件時間都是小幅增長,這跟文件存儲的連續性和簇大小等有關系),這個結果恰恰跟書生預料的相反,說明MYSQL對更大文件讀取可能又附加了某些操作(兩次時間增長了近30%),如果只是單純的賦值轉換應該是差異偏小才對。
3、寫文件和INSERT幾乎不用測試就可以推測出,資料庫效率只會更差。
4、很小的配置文件如果不需要使用到資料庫特性,更加適合放到獨立文件里存取,無需單獨創建數據表或記錄,很大的文件比如圖片、音樂等採用文件存儲更為方便,只把路徑或縮略圖等索引信息放到資料庫里更合理一些。
5、PHP上如果只是讀文件,file_get_contents比fopen、fclose更有效率,不包括判斷存在這個函數時間會少3秒左右。
6、fetch_row和fetch_object應該是從fetch_array轉換而來的,書生沒看過PHP的源碼,單從執行上就可以說明fetch_array效率更高,這跟網上的說法似乎相反。
實 際上在做這個試驗之前,從個人經驗判斷就有了大概的結果,測試完成後則有種豁然開朗的感覺。假定在程序效率和關鍵過程相當且不計入緩存等措施的條件下,讀 寫任何類型的數據都沒有直接操作文件來的快,不論MSYQL過程如何,最後都要到磁碟上去讀這個「文件」(記錄存儲區等效),所以當然這一切的前提是只讀 內容,無關任何排序或查找操作。

MySQL是一個關系型資料庫管理系統,由瑞典MySQL AB 公司開發,屬於 Oracle 旗下產品。MySQL 是最流行的關系型資料庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關系資料庫管理系統) 應用軟體之一。
MySQL是一種關系型資料庫管理系統,關系資料庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。
MySQL所使用的 SQL 語言是用於訪問資料庫的最常用標准化語言。MySQL 軟體採用了雙授權政策,分為社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站資料庫。

2. php讀寫txt文件與讀寫資料庫哪個更快

肯定讀寫txt,前提是一定要設置了txt的編碼格式,默認的ascii格式,讀資料庫每次還要建立連接,執行操作,返回結果,再判斷是否寫入成功,執行步驟太多,所以讀寫txt更快

3. 寫入資料庫時間快還是txt時間塊

讀文件效率比資料庫高無數倍,無論數據有多少都能高無數倍。資料庫的優點是可以條件篩選,因為資料庫有索引,所以在條件篩選的時候會比文本文件快(如果你的文本文件自己建立內容索引,就會比資料庫快)文本文件推薦你使用的方式是二進制讀寫,所有文本都轉換為二進制存進去,每一條記錄都使用固定的位元組數,最前面的八位元組寫一個64位long型的時間,然後在你需要讀取的時候,可以用文本總長度除以你每一條的固定位元組數,得到這個文件到底有幾條數據,然後用二分法去判定每一條的時間,經實際測試億萬條數據可以在一個最小計時器周期內找到需要的數據

4. 寫內存,寫文件,寫資料庫,如何權衡!

速度比較:寫內存>寫文件>寫資料庫 寫內存快是快,但是內存中的數據是無法持久化的。 寫文件比起寫資料庫速度快了很多,但是查詢統計文件中的數據就非常困難了。 寫資料庫就是慢,特別是高並發的時候會鎖表。 流量分析系統會在每個要被統計的網站上放上一段js,每次網站的某一個頁面被訪問時這段js都會提交一次流量分析系統用與統計PV。所以流量分析系統的並發量是非常大的。 並發量如此之大,所以每次提交的數據不能直接寫文件,更不能寫資料庫,所以只能寫內存。在java中可以寫入一個Static的Vector中,並用一個線程讀取Vector中的數據,並每隔一分鍾或半分鍾寫一次文件,文件名為「年月日時「,所以是每小時會生成一個新的文件。

5. php程序將一段固定內容寫入mysql和文本文件里哪個效率高

這個問題要看實際情況 你寫進資料庫要看錶是什麼類型的 如果是memory型的表 速度是最快的 如果不是 基本上就是直接寫入mysql的文本文件里了 默認是加密的 沒有效率之分因為本來mysql 數據表就是一堆的文本文件在硬碟上讀寫

6. 資料庫和文件,php操作哪一種會快的

怎麼說呢,資料庫是專業的,數據量特別大時優勢就體現出來了,如果就是一點點數據,你自己搞搜索代碼,和用資料庫速度沒啥區別,但是一旦數據量暴增,請相信資料庫引擎的力量吧,畢竟整個世界也沒幾個公司能開發數據引擎

7. 資料庫和文件哪個快 csdn

不能一概而論,要看是什麼數據,多少數據。
假如只有一條數據還專門存資料庫, 那絕對是沒事找事。
不過如果是百萬級的數據,還是用資料庫吧。即使用了資料庫也還是很慢,還需要創建索引。
就開發來說,如果你需要經常使用的數據,而且潛在可能會有不少,那麼就使用資料庫吧。比如很多的用戶資料產品資料這些。但是如果只是要保存一個個人設置,比如現在登錄的用戶的資料,就使用文件吧。
伺服器端還是使用資料庫好些

8. 文件上和資料庫上的查詢數據,到底哪個快為什麼

資料庫綜合運算上還是快很快的。特別是對於大數據量的處理上。

資料庫,在儲存數據上有很系統的方法和演算法,並經過索引的方式來進行查找,可根據不同的數據類型進行分類。
而且還有一套數據處理引擎,可加快數據傳輸和對內容的許可權管理。在內存和CPU分配的使用上能更加有效的利用計算機資源。

而且資料庫是專處理數據的,用起來也很方便。

9. 磁碟讀寫和資料庫讀寫哪個效率更高

假定在程序效率和關鍵過程相當且不計入緩存等措施的條件下,讀寫任何類型的數據都沒有直接操作文件來的快,不論MSYQL過程如何,最後都要到磁碟上去讀這個「文件」(記錄存儲區等效),所以當然這一切的前提是只讀 內容,無關任何排序或查找操作。

動態網站一般都是用資料庫來存儲信息,如果信息的及時性要求不高 可以加入緩存來減少頻繁讀寫資料庫。

兩種方式一般都支持,但是繞過操作系統直接操作磁碟的性能較高,而且安全性也較高,資料庫系中的磁碟性能一直都是瓶頸,大型資料庫一般基於unix
系統,當然win下也有,不常用應為win的不可靠性,unix下,用的是裸設備raw設備,就是沒有加工過的設備(unix下的磁碟分區屬於特殊設備,
以文件形式統一管理),由dbms直接管理,不通過操作系統,效率很高,可靠性也高,因為磁碟,cache和內存都是自己管理的,大型資料庫系統
db2,oracal,informix(不太流行了),mssql算不上大型資料庫系統。

1、直接讀文件相比資料庫查詢效率更勝一籌,而且文中還沒算上連接和斷開的時間。

2、一次讀取的內容越大,直接讀文件的優勢會越明
顯(讀文件時間都是小幅增長,這跟文件存儲的連續性和簇大小等有關系),這個結果恰恰跟書生預料的相反,說明MYSQL對更大文件讀取可能又附加了某些操
作(兩次時間增長了近30%),如果只是單純的賦值轉換應該是差異偏小才對。

3、寫文件和INSERT幾乎不用測試就可以推測出,資料庫效率只會更差。
4、很小的配置文件如果不需要使用到資料庫特性,更加適合放到獨立文件里存取,無需單獨創建數據表或記錄,很大的文件比如圖片、音樂等採用文件存儲更為方便,只把路徑或縮略圖等索引信息放到資料庫里更合理一些。

5、PHP上如果只是讀文件,file_get_contents比fopen、fclose更有效率,不包括判斷存在這個函數時間會少3秒左右。
6、fetch_row和fetch_object應該是從fetch_array轉換而來的,書生沒看過PHP的源碼,單從執行上就可以說明fetch_array效率更高,這跟網上的說法似乎相反。

磁碟讀寫與資料庫的關系:

一 磁碟物理結構
(1) 碟片:硬碟的盤體由多個碟片疊在一起構成。

在硬碟出廠時,由硬碟生產商完成了低級格式化(物理格式化),作用是將空白的碟片(Platter)劃分為一個個同圓心、不同半徑的磁軌
(Track),還將磁軌劃分為若干個扇區(Sector),每個扇區可存儲128×2的N次方(N=0.1.2.3)位元組信息,默認每個扇區的大小為
512位元組。通常使用者無需再進行低級格式化操作。

(2) 磁頭:每張碟片的正反兩面各有一個磁頭。

(3) 主軸:所有磁片都由主軸電機帶動旋轉。

(4) 控制集成電路板:復雜!上面還有ROM(內有軟體系統)、Cache等。

二 磁碟如何完成單次IO操作
(1) 尋道
當控制器對磁碟發出一個IO操作命令的時候,磁碟的驅動臂(Actuator
Arm)帶動磁頭(Head)離開著陸區(Landing
Zone,位於內圈沒有數據的區域),移動到要操作的初始數據塊所在的磁軌(Track)的正上方,這個過程被稱為尋道(Seeking),對應消耗的時
間被稱為尋道時間(Seek Time);

(2) 旋轉延遲
找到對應磁軌還不能馬上讀取數據,這時候磁頭要等到磁碟碟片(Platter)旋轉到初始數據塊所在的扇區(Sector)落在讀寫磁頭正下方之後才能開始讀取數據,在這個等待碟片旋轉到可操作扇區的過程中消耗的時間稱為旋轉延時(Rotational Delay);

(3) 數據傳送
接下來就隨著碟片的旋轉,磁頭不斷的讀/寫相應的數據塊,直到完成這次IO所需要操作的全部數據,這個過程稱為數據傳送(Data Transfer),對應的時間稱為傳送時間(Transfer Time)。完成這三個步驟之後單次IO操作也就完成了。

根據磁碟單次IO操作的過程,可以發現:
單次IO時間 = 尋道時間 + 旋轉延遲 + 傳送時間

進而推算IOPS(IO per second)的公式為:
IOPS = 1000ms/單次IO時間

三 磁碟IOPS計算
不同磁碟,它的尋道時間,旋轉延遲,數據傳送所需的時間各是多少?

1. 尋道時間
考慮到被讀寫的數據可能在磁碟的任意一個磁軌,既有可能在磁碟的最內圈(尋道時間最短),也可能在磁碟的最外圈(尋道時間最長),所以在計算中我們只考慮平均尋道時間。

在購買磁碟時,該參數都有標明,目前的SATA/SAS磁碟,按轉速不同,尋道時間不同,不過通常都在10ms以下:

3. 傳送時間2. 旋轉延時

和尋道一樣,當磁頭定位到磁軌之後有可能正好在要讀寫扇區之上,這時候是不需要額外的延時就可以立刻讀寫到數據,但是最壞的情況確實要磁碟旋轉整整
一圈之後磁頭才能讀取到數據,所以這里也考慮的是平均旋轉延時,對於15000rpm的磁碟就是(60s/15000)*(1/2) = 2ms。

(1) 磁碟傳輸速率
磁碟傳輸速率分兩種:內部傳輸速率(Internal Transfer Rate),外部傳輸速率(External Transfer Rate)。

內部傳輸速率(Internal Transfer Rate),是指磁頭與硬碟緩存之間的數據傳輸速率,簡單的說就是硬碟磁頭將數據從碟片上讀取出來,然後存儲在緩存內的速度。

理想的內部傳輸速率不存在尋道,旋轉延時,就一直在同一個磁軌上讀數據並傳到緩存,顯然這是不可能的,因為單個磁軌的存儲空間是有限的;

實際的內部傳輸速率包含了尋道和旋轉延時,目前家用磁碟,穩定的內部傳輸速率一般在30MB/s到45MB/s之間(伺服器磁碟,應該會更高)。

外部傳輸速率(External Transfer Rate),是指硬碟緩存和系統匯流排之間的數據傳輸速率,也就是計算機通過硬碟介面從緩存中將數據讀出交給相應的硬碟控制器的速率。

硬碟廠商在硬碟參數中,通常也會給出一個最大傳輸速率,比如現在SATA3.0的6Gbit/s,換算一下就是6*1024/8,768MB/s,通常指的是硬碟介面對外的最大傳輸速率,當然實際使用中是達不到這個值的。

這里計算IOPS,保守選擇實際內部傳輸速率,以40M/s為例。

(2) 單次IO操作的大小
有了傳送速率,還要知道單次IO操作的大小(IO Chunk Size),才可以算出單次IO的傳送時間。那麼磁碟單次IO的大小是多少?答案是:不確定。

操作系統為了提高 IO的性能而引入了文件系統緩存(File System Cache),系統會根據請求數據的情況將多個來自IO的請求先放在緩存裡面,然後再一次性的提交給磁碟,也就是說對於資料庫發出的多個8K數據塊的讀操作有可能放在一個磁碟讀IO里就處理了。

還有,有些存儲系統也是提供了緩存(Cache),接收到操作系統的IO請求之後也是會將多個操作系統的 IO請求合並成一個來處理。

不管是操作系統層面的緩存還是磁碟控制器層面的緩存,目的都只有一個,提高數據讀寫的效率。因此每次單獨的IO操作大小都是不一樣的,它主要取決於系統對於數據讀寫效率的判斷。這里以SQL Server資料庫的數據頁大小為例:8K。

(3) 傳送時間
傳送時間 = IO Chunk Size/Internal Transfer Rate = 8k/40M/s = 0.2ms

可以發現:
(3.1) 如果IO Chunk Size大的話,傳送時間會變大,從而導致IOPS變小;
(3.2) 機械磁碟的主要讀寫成本,都花在了定址時間上,即:尋道時間 + 旋轉延遲,也就是磁碟臂的擺動,和磁碟的旋轉延遲。
(3.3) 如果粗略的計算IOPS,可以忽略傳送時間,1000ms/(尋道時間 + 旋轉延遲)即可。

4. IOPS計算示例
以15000rpm為例:

(1) 單次IO時間
單次IO時間 = 尋道時間 + 旋轉延遲 + 傳送時間 = 3ms + 2ms + 0.2 ms = 5.2 ms

(2) IOPS
IOPS = 1000ms/單次IO時間 = 1000ms/5.2ms = 192 (次)
這里計算的是單塊磁碟的隨機訪問IOPS。

考慮一種極端的情況,如果磁碟全部為順序訪問,那麼就可以忽略:尋道時間 + 旋轉延遲 的時長,IOPS的計算公式就變為:IOPS = 1000ms/傳送時間
IOPS = 1000ms/傳送時間= 1000ms/0.2ms = 5000 (次)

顯然這種極端的情況太過理想,畢竟每個磁軌的空間是有限的,尋道時間 + 旋轉延遲 時長確實可以減少,不過是無法完全避免的。

四 資料庫中的磁碟讀寫
1. 隨機訪問和連續訪問
(1) 隨機訪問(Random Access)
指的是本次IO所給出的扇區地址和上次IO給出扇區地址相差比較大,這樣的話磁頭在兩次IO操作之間需要作比較大的移動動作才能重新開始讀/寫數據。

(2) 連續訪問(Sequential Access)
相反的,如果當次IO給出的扇區地址與上次IO結束的扇區地址一致或者是接近的話,那磁頭就能很快的開始這次IO操作,這樣的多個IO操作稱為連續訪問。

(3) 以SQL Server資料庫為例
數據文件,SQL Server統一區上的對象,是以extent(8*8k)為單位進行空間分配的,數據存放是很隨機的,哪個數據頁有空間,就寫在哪裡,除非通過文件組給每個表預分配足夠大的、單獨使用的文件,否則不能保證數據的連續性,通常為隨機訪問。
另外哪怕聚集索引表,也只是邏輯上的連續,並不是物理上。

日誌文件,由於有VLF的存在,日誌的讀寫理論上為連續訪問,但如果日誌文件設置為自動增長,且增量不大,VLF就會很多很小,那麼就也並不是嚴格的連續訪問了。

2. 順序IO和並發IO
(1) 順序IO模式(Queue Mode)
磁碟控制器可能會一次對磁碟組發出一連串的IO命令,如果磁碟組一次只能執行一個IO命令,稱為順序IO;

(2) 並發IO模式(Burst Mode)
當磁碟組能同時執行多個IO命令時,稱為並發IO。並發IO只能發生在由多個磁碟組成的磁碟組上,單塊磁碟只能一次處理一個IO命令。

(3) 以SQL Server資料庫為例
有的時候,盡管磁碟的IOPS(Disk Transfers/sec)還沒有太大,但是發現資料庫出現IO等待,為什麼?通常是因為有了磁碟請求隊列,有過多的IO請求堆積。

磁碟的請求隊列和繁忙程度,通過以下性能計數器查看:
LogicalDisk/Avg.Disk Queue Length
LogicalDisk/Current Disk Queue Length
LogicalDisk/%Disk Time

這種情況下,可以做的是:
(1) 簡化業務邏輯,減少IO請求數;
(2) 同一個實例下,多個資料庫遷移的不同實例下;
(3) 同一個資料庫的日誌,數據文件分離到不同的存儲單元;
(4) 藉助HA策略,做讀寫操作的分離。

3. IOPS和吞吐量(throughput)
(1) IOPS
IOPS即每秒進行讀寫(I/O)操作的次數。在計算傳送時間時,有提到,如果IO Chunk Size大的話,那麼IOPS會變小,假設以100M為單位讀寫數據,那麼IOPS就會很小。

(2) 吞吐量(throughput)
吞吐量指每秒可以讀寫的位元組數。同樣假設以100M為單位讀寫數據,盡管IOPS很小,但是每秒讀寫了N*100M的數據,吞吐量並不小。

(3) 以SQL Server資料庫為例
對於OLTP的系統,經常讀寫小塊數據,多為隨機訪問,用IOPS來衡量讀寫性能;
對於數據倉庫,日誌文件,經常讀寫大塊數據,多為順序訪問,用吞吐量來衡量讀寫性能。

磁碟當前的IOPS,通過以下性能計數器查看:
LogicalDisk/Disk Transfers/sec
LogicalDisk/Disk Reads/sec
LogicalDisk/Disk Writes/sec

磁碟當前的吞吐量,通過以下性能計數器查看:
LogicalDisk/Disk Bytes/sec
LogicalDisk/Disk Read Bytes/sec
LogicalDisk/Disk Write Bytes/sec

10. 讀寫資料庫與讀寫文件哪個更快

同等演算法,應該是磁碟讀取效率更高;因為資料庫在讀取的過程中,還是要讀取磁碟

閱讀全文

與寫資料庫寫文件哪個快相關的資料

熱點內容
男朋友媽媽發信息給我應該怎麼回 瀏覽:806
合夥出技術的人如何保證分成 瀏覽:67
什麼網發水果信息會點 瀏覽:640
廣州麥嗨賣什麼產品 瀏覽:874
加密市場如何調整股票 瀏覽:798
微信上沒有小程序怎麼找 瀏覽:376
遼事通小程序如何更換賬戶 瀏覽:440
農村養牛技術學什麼好 瀏覽:138
買新房子走什麼程序最安全 瀏覽:599
菜市場賣的蛋雞是什麼品種 瀏覽:813
市場部經理需要考哪些證 瀏覽:866
大數據升本後專業叫什麼 瀏覽:558
如何創建業務數據中心 瀏覽:63
晉中古玩市場有哪些 瀏覽:422
如何爬取天貓資料庫 瀏覽:8
網貸交易流程會產生哪些問題 瀏覽:195
男人不聯系你還發信息說想你怎麼回復 瀏覽:844
抖音上的數據在哪裡 瀏覽:199
游資用什麼技術最好 瀏覽:446
上海股市最初是如何交易 瀏覽:754