簡體   English   中英

在Linux上分析數據庫密集型代碼

[英]Profiling database intensive code on Linux

我有一套在Linux上運行的實時金融交易程序。 該代碼用C ++編寫,並且是數據庫密集型(MySQL)。 我們嘗試在重要的地方使用內存表。 雖然我一直很擔心延遲,但是在一天中的某些時候,原始吞吐量才是瓶頸。

如何正確配置此系統? 我希望能夠看到花費的時間百分比(a)運行我的應用程序代碼,即我的應用程序代碼受CPU限制,(b)在MySQL中運行,或(c)在OS系統調用(例如與網絡相關的調用)中運行。 我還希望至少在數據庫上看到等待磁盤的時間。

我還意識到,針對延遲進行性能分析和優化與針對吞吐量進行性能分析和優化非常不同。 為了優化吞吐量,我認為可以測量上述值的傳統探查器將是合適的。 為了優化延遲,我認為只記錄微秒准確的時間戳就足夠了,但是當我看到異常值時,仍然很難確定所有時間都花在了哪里。

我在考慮正確的方法嗎? 有哪些可以幫助我的工具?

在處理查詢時嘗試檢查數據庫正在執行的操作可能很值得。 例如,了解查詢優化器如何執行查詢。 有時,強制使用索引,刪除索引或重新排列查詢會產生巨大的影響。

https://dev.mysql.com/doc/refman/5.1/en/show-profile.html

另外,建議您查看其他RMDB如何處理您的工作負載。 在不考慮查詢類型或復雜性的情況下,很難說出mysql還是PostgreSQL對您來說會更好。 但是無論如何,第一步是采取科學的方法來測量數據。

就像弗拉德(Vlad)所說的那樣,您可能想看看使用stap的方法,但這並不是出於膽小,如果您仍然遇到性能問題,我建議您這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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