我想開發一個網絡系統的接口。基本上,一個軟件通過UDP和其他軟件收集所有流量datada,並將數據插入到mysql(客戶端不具有mysql服務器,只有具有用戶界面訪問權限的服務器具有mysql服務器)。 有大約50個客戶端有真正的高流量和插入操作在MySQL服務器上真的很快。但我想知道性能問題,我打算用推送服務器或其他東西實時打印統計信息,而且這些流量統計信息必須保存很長時間,所以我應該使用什麼樣的數據庫引擎? myisamm,innodb,檔案?有人可以向我解釋一下嗎?我也歡迎您的建議PHP的mysql選擇引擎類型的統計
回答
我認爲您需要做的最重要的事情就是建立一個環境,您可以在其中進行一些測試並分析不同方法。
MyISAM對於你剛剛談論的事情可能會很快,你只需要將行添加到表的末尾,然後對它執行選擇操作 - 不會刪除或更新。
您需要定期存檔較早的行,我相信存檔存儲引擎可能非常適合這一點,但我從來沒有機會使用它,也沒有經驗。不過,我懷疑它可以用作應用程序的主表。您可以考慮進行某種分區,例如您可以按月將結果存儲在不同的表格中。
該書High Performance MySQL應該可能是您的第一個停靠港。
聽起來像一個宏偉的項目 - 祝你好運。
這裏是InnoDB和MyISAM的細節
的MyISAM是高讀取量,InnoDB的高更新量更是由於表VS行鎖定。
innodb是日誌記錄的,並且可以從myisam無法運行的崩潰中恢復,非常類似於NTFS與FAT文件系統。
myisam有全文索引,innodb沒有。
innodb有交易支持,提交和回滾,myisam缺乏這些。
因此,如果您不真正關心更新和恢復表,並且不需要事務支持,則可以使用MyISAM。要解決大量數據的問題,您可以考慮使用MySQL分區,然後定期使用歸檔引擎將舊條目歸檔到備份表中。
如果你真的關心閱讀速度,你也可以考慮延遲插入。
UPDATE:
對於MyISAM表,如果有數據文件的中間沒有空閒塊,併發的SELECT和INSERT語句的支持。在這些情況下,你很少需要在MyISAM中使用INSERT DELAYED。 insert-delayed
如何使用其他數據庫服務器,如hypertable?你有什麼經驗嗎? – cia 2012-01-17 15:54:33
您應該建立每天更新的統計表,您可以查詢所需的統計數據。
實際上,我打算實施一個用於用戶界面的推送服務器,以便他們可以看到實時統計信息,因此cron每天都能解決我認爲不能解決的問題? – cia 2012-01-17 15:55:28
- 1. 選擇Mysql引擎處理大型「類型值」表
- 2. Mysql的innodb的:選擇索引類型爲「大於> =」選擇
- 3. Redis與Mysql引擎類型的內存
- 4. MySQL的:選擇不同的統計
- 5. 在mysql中使用源選擇引擎
- 6. MongoDB MapReduce統計引擎
- 7. php jquery像選擇器引擎
- 8. Mysql導入引擎類型表HEAP
- 9. DataTables - 統計每種類型的選項
- 10. PHP易於嵌入的網頁統計引擎
- 11. ActiveMQ的傳輸類型的選擇取決於系統類型
- 12. PHP類設計選擇
- 13. PHP和MySQL統計系統
- 14. php mysql搜索引擎
- 15. 的MySQL/PHP的搜索標籤引擎
- 16. PHP/MySQL的 - 選擇
- 17. 選擇MVC視圖引擎
- 18. JavaScript-DOM選擇器引擎
- 19. iOS遊戲引擎選擇
- 20. 搜索引擎使用PHP,InnoDB引擎的Mysql
- 21. MySQL的選擇每種類型
- 22. 選擇MySQL的數據類型
- 23. 錯誤在谷歌雲計算引擎:不能選擇機型的新實例
- 24. 如何選擇mysql數據庫引擎? InnoDB的或MyISAM數據
- 25. 針對mysql的PHP搜索引擎
- 26. PHP/MySQL:簡單的搜索引擎
- 27. 搜索引擎的SQL查詢(PHP/MySQL)
- 28. 定義哪些類型選擇工會MySQL的PHP
- 29. ASP.NET MVC 3:視圖引擎的設計選擇
- 30. 計算引擎自動配置器:機器的選擇終止
我前幾次檢查過這本書,是的,這真的是一個好的開始,但如你所知,在現實世界中,生產環境變得骯髒,書籍只有理論上的暗示 – cia 2012-01-17 15:53:32