[英]PHP mysql choosing engine type for stats
我正在嘗試為網絡系統開發接口。 基本上,一個軟件通過UDP和其他軟件收集所有流量數據,並將數據插入mysql(客戶端沒有mysql服務器,只有具有用戶界面訪問權限的服務器有mysql服務器)。 有大約50個客戶端具有非常高的流量,並且在mysql服務器上的插入操作非常快。 但我想知道性能問題,我計划用推送服務器或其他東西實時打印統計數據,這些流量統計數據必須保存很長時間,所以我應該使用什么樣的數據庫引擎? myisamm,innodb,存檔? 有人可以向我解釋一下嗎? 我也願意接受建議
我認為您需要做的最重要的事情是建立一個環境,您可以在其中進行一些測試並分析不同的方法。
對於你正在討論的事情,MyISAM可能很快就會變壞,你只是在表的末尾添加行並運行選擇它 - 沒有刪除或更新。
您需要定期存檔較舊的行,我相信存檔存儲引擎可能非常適合這種情況,但我從來沒有機會使用它,也沒有根據那里的經驗說話。 我懷疑它可以作為應用程序的主表使用。 您可以考慮某種分區,例如,按月將結果存儲在不同的表中。
高性能MySQL這本書應該是你的第一個停靠點。
聽起來像一個宏偉的項目 - 祝你好運。
以下是innodb和myisam的詳細信息
對於高讀取卷,myisam更好,因為表與行鎖定,因此更新卷的innodb。
innodb是記錄的,可以從myisam不能的崩潰中恢復,就像NTFS與FAT文件系統一樣。
myisam有全文索引,innodb沒有。
innodb有事務支持,提交和回滾,myisam缺少這些。
因此,如果您不關心更新和恢復表,並且不需要事務支持,則可以使用MyISAM。 要解決大量數據的問題,您可以考慮使用MySQL分區,然后使用歸檔引擎定期歸檔備份表中的舊條目。
如果您真的擔心閱讀速度,也可以考慮延遲插入。
更新:
對於MyISAM表,如果數據文件中間沒有空閑塊,則支持並發SELECT和INSERT語句。 在這種情況下,您很少需要在MyISAM中使用INSERT DELAYED。 插入延遲
您應該構建每天更新的統計表,您可以查詢所需的統計信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.