簡體   English   中英

PHP mysql為統計數據選擇引擎類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM