Board logo

標題: Insert快既db如何選擇? [打印本頁]

作者: 3ldk    時間: 2017-11-20 04:26     標題: Insert快既db如何選擇?

評估過, 高峰期大約每秒收5000-6000個request
每個request只係簡單insert一個record

用慣php+mysql, 可以的話都盡量想用返依個組合

不過我估多數都唔得, 係咪要改language?
變成node.js+mysql?

如果咁都唔得, 係咪要node.js+另一隻更快的DB?
作者: pl8888    時間: 2017-11-20 05:21

你可以寫咗落 temp file, 再用background thread 一個 batch insert 落 mysql 到 (LOAD DATA INFILE)

via HKEPC Reader for Android
作者: hkce    時間: 2017-11-20 09:08

回覆 1# 3ldk

mysql 行緊咩engine? MyISAM? InnDB?
兩者要fine tune concurrent insert 都唔同方法,另要睇熟manual 先好tune,亂改會炒到好慢的。
作者: tsangwailam    時間: 2017-11-20 10:36

用redis做cache
https://medium.com/@amangoeliitb ... h-redis-dbd38fdf3cb
作者: KinChungE    時間: 2017-11-20 14:29

其實php同node.js都冇分別, 只係食U
最後都係靠mysql insert
係轉的話, 都可能係php + mssql / php + oracle db
而唔係轉node.js
作者: cise4832    時間: 2017-11-20 16:45

其實modern db一秒insert 5-6000個row應該濕濕碎?
作者: 3ldk    時間: 2017-11-20 18:15

網上D比較文章, 唔係成日話node.js的Non-blocking特性, 特別適合處理大量request的嗎? 仲話php好慢, 所以我諗住係考慮DB之前, 首先要考慮個app用咩language

如果幾千個request真係濕濕碎, 咁我就照以下組合去做了
php7+mysql+myisam

再進一步, 其實我仲用慣f3+f3內置的orm
所以如果可以用埋以下組合就更加好
php7+mysql+myisam+f3+f3內置的orm


我諗一聽到orm, 好多人一定話好慢, 要效能就遠離orm...等等

但其實就我觀察, f3個orm只不過係gen條sql出黎行, 其實同你自己打sql無分別
唔明點解個個都話orm慢
作者: 梁炳    時間: 2017-11-20 19:34

php都有分apache定nginx+fpm
apache prefork未必頂到每秒5,6000

orm係會慢左同食ram左,你點都係要實測下,個個webapp情況不同
作者: hihihi123hk    時間: 2017-11-20 21:48

回覆 1# 3ldk


   
做啲 Eventually Consistent 嘅 DB Op 多數啲人(大 Startup) 會用 Cassandra

主因離不開「易於 Horizontal Scaling」、「Linear Performance on Scaling」

不過如果唔洗考慮 Scaling 嘅話,SQL 揀岩 Engine 黎用,再做 Tuning 應該唔差得去邊

via HKEPC IR Pro v2.1.0 - iPhone
作者: 3ldk    時間: 2017-11-20 22:31

咁ok了, 可以揀php7+mysql了, 最緊要confirm依兩個係無問題, 只係server影響的話, 將來換server同tune db就OK, 主要係唔想揀錯, 將來要重新寫過

我諗我依個case唔屬於Eventually Consistent
個app只係單純做log, 單一table, 我諗唔需要nosql都得
作者: KinChungE    時間: 2017-11-20 22:33

網上D比較文章, 唔係成日話node.js的Non-blocking特性, 特別適合處理大量request的嗎? 仲話php好慢, 所以我 ...
3ldk 發表於 2017-11-20 18:15



因為ORM要將D data變成一個object
一開新object = memory allocation = 慢左
作者: hihihi123hk    時間: 2017-11-20 23:58

回覆 10# 3ldk


   
咁不如真係做 log ,然後再加個 elastic search

唔好用 SQL 喇

via HKEPC IR Pro v2.1.0 - iPhone
作者: 3ldk    時間: 2017-11-21 02:37

回覆  3ldk


   
咁不如真係做 log ,然後再加個 elastic search

唔好用 SQL 喇

via HKEPC IR Pro v2 ...
hihihi123hk 發表於 2017-11-20 23:58



elastic search第一次聽, google話佢係search engine, 我有無搵錯資料?
log file + elastic search係點玩法?
係咪即係將D log寫晒入csv, 然後elastic search查log?

不過果D log, 之後會做處理再出report, 咁既話仲適唔適合?
作者: 專業收買佬    時間: 2017-11-21 03:02

咁ok了, 可以揀php7+mysql了, 最緊要confirm依兩個係無問題, 只係server影響的話, 將來換server同tune db就 ...
3ldk 發表於 2017-11-20 22:31



單一table....殺雞用牛刀
作者: hihihi123hk    時間: 2017-11-21 09:19

本帖最後由 hihihi123hk 於 2017-11-21 09:21 編輯
elastic search第一次聽, google話佢係search engine, 我有無搵錯資料?
log file + elastic search係點 ...
3ldk 發表於 2017-11-21 02:37


   
唔知你有咩用途

但係 “Log” 嘅話,意義上應該係出咗事嘅時候可以 Trace 番 For Audit,平時無事無幹根本唔會理

一日一個  Log File , 每句 Log 都係純 String, 例如

“Starting to write xxxx to DB”

“Insert DB encounter exception $e, fall back to xxxx”

純 String 要容易 Full text Search 就要靠 Elastic Search 呢類 Engine

PHP 都有大量 “Logging” Library,之後拎住啲 Log file 射去 Elastic Search powered Application

一日百幾萬行 Log 都唔出奇, 如果用 SQL 做 full text search 一定慢到癲

via HKEPC IR Pro v2.1.0 - iPhone
作者: woodlcw    時間: 2017-11-21 10:23

用serverless background再batch落(local?) db 啦
每秒幾K record 你諗返穏定性好過效率囉
作者: YuiNarusawa    時間: 2017-11-22 01:11

做過ad banner log 大量banner impression都係先cache係redis 再batch insert入 db





歡迎光臨 電腦領域 HKEPC Hardware (https://www.hkepc.com/forum/) Powered by Discuz! 7.2