單表數(shù)據(jù)量:202908463(2億多條記錄),物理容量:單文件50個(gè),上圖:
環(huán)境:php7.3 MySQL5.7 think-Orm 核心庫
測試環(huán)節(jié):寫入數(shù)據(jù)庫以億為單位的數(shù)據(jù)
1:think-Orm的Db庫長時(shí)間寫入數(shù)據(jù),每次寫入1000條數(shù)據(jù),發(fā)生內(nèi)存泄漏,希望官方有看到這個(gè)文章進(jìn)行改進(jìn)。上圖
2:改用自己封裝單文件pdo類庫文件,循環(huán)插入數(shù)據(jù),每次插入5萬條,本想每次插入10條,結(jié)果10萬條報(bào)錯(cuò),將就5萬每次插入。上圖
單文件pdo庫分享
3:PHP程序查詢總計(jì)多少條記錄耗時(shí):
think-Orm框架查詢耗時(shí):
數(shù)據(jù)庫直連SQL查詢耗時(shí):
通過真實(shí)環(huán)境測試,數(shù)據(jù)IO是最吃內(nèi)存和CPU,所以項(xiàng)目的瓶頸常常在于數(shù)據(jù)庫性能。
代碼的優(yōu)劣能起到一定作用,但解決不了本質(zhì)。
當(dāng)數(shù)據(jù)量大到一定程度,比拼的的就是物理硬件和軟件的綜合調(diào)優(yōu)水平,這個(gè)才是我們要努力的方向。
參考技術(shù)點(diǎn):
硬件升級(jí)層面:升級(jí)cup,升級(jí)內(nèi)存,帶寬。
軟件開發(fā)層面:分庫,分表,緩存,中間件等。每一塊的東西都?jí)蛭覀儗W(xué)習(xí)研究很長時(shí)間,發(fā)現(xiàn)問題,解決問題才是編碼的正確姿勢(shì),不要一味聽一些空大虛的講座,意義不大。
項(xiàng)目實(shí)操才是重點(diǎn),有更多項(xiàng)目實(shí)操,有更多的業(yè)務(wù)場景解決方案,才是程序員向企業(yè)主要更高薪資的底氣。
此篇技術(shù)測試類文章,做這個(gè)測試文章的初衷是因?yàn)橐痪湓挕?/p>
一個(gè)認(rèn)識(shí)的老程序員,在菊花廠干了10多年,后來出來創(chuàng)業(yè)又搞了幾年,編碼年齡小20年,主要技術(shù)棧是JAVA和Python,平時(shí)聊一些技術(shù)方面的東西,估計(jì)是有做過
一些外包項(xiàng)目,合作伙伴是php寫的,應(yīng)該是做黃了,尾款沒有收回來,這種情況很常見,誰能保證每個(gè)外包項(xiàng)目都做成能呢。
所以對(duì)php產(chǎn)生了一些偏見,認(rèn)為php程序員水平不行,php語言性能不行,帶有一些主觀色彩,
這篇文章就是為php來證明,來證明php是世界上最好的語言之一,是解決問題的最佳工具。
工具的利害性,取決于開發(fā)人員的相對(duì)性,人有最復(fù)雜奇妙的想象力,所以為什么不用最便捷,最省成本的方案來做事情呢。