【问题标题】:Count number of queries on database in Golang?计算Golang中数据库的查询数?
【发布时间】:2019-07-20 16:10:47
【问题描述】:

我正在尝试计算针对我的 Golang API 服务器的请求中针对数据库运行的查询数。这是为了优化 + 发现我们 API 中的瓶颈。

在 Django 中如何做到这一点的一个例子是here

知道在 Golang 中是否有一种简单的方法可以做到这一点?

【问题讨论】:

  • expvar 包专门用于应用内指标。

标签: mysql go


【解决方案1】:

据我所知,没有简单的解决方案。

您可以将您的数据库包装在您自己的结构中,然后实现Exec() 或您直接在该结构上使用的任何函数。您的函数只会调用数据库一,然后按您认为合适的方式计算它。

可以在此处找到类似的示例,但带有记录器: How to log queries to database drivers?

【讨论】:

    【解决方案2】:

    为了找到瓶颈,我建议直接进入 MySQL 数据库并启用慢查询日志,并将 long_query_time 慢慢设置为低毫秒值。

    使用pt-query-digest 之类的工具来帮助消化这些信息,以获得类似查询的频率。攻击那些需要修复的慢查询,然后设置一个较低的值。

    每个查询的实际数量实际上并没有那么有用。

    从整体角度解决问题时,测量每个接口的 API 响应时间将有助于您全面了解服务。

    【讨论】:

    • 另见flame graphs in go programs。您会很快看到 go 应用程序中正在等待 SQL 响应的调用,但也会看到应用程序的耗时区域。
    猜你喜欢
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 2016-09-25
    • 2013-10-01
    • 2014-03-24
    相关资源
    最近更新 更多