如何记录在db上运行的每个查询的查询及其执行时间?

时间:2013-04-23 07:31:33

标签: mysql sql logging triggers crud

我有一个包含超过250个表的庞大数据库。在数据库上运行不同类型的查询。由于数据库已经发展多年,现在我需要优化数据库和查询。我已经遵循了索引等优化概念。

我的问题是,如何记录查询及其在数据库上运行的每个查询的执行时间?所以我可以分析哪个查询需要多少秒并优化它们。

鉴于我知道MYSQL Trigger对此非常理想,但我不知道如何为整个数据库编写触发器,因此它将每个查询记录到具有查询执行时间的表中。我希望触发器记录数据库中发生的所有CRUD操作。

我怎样才能完成它?

2 个答案:

答案 0 :(得分:7)

使用mysql slow query log。这将帮助您仅获取缓慢而不是记录/分析所有查询的查询。您只需要设置long_query_time的参数,例如1或2秒。

答案 1 :(得分:1)

还可以设置long_query_time = 0,您将看到所有sql查询!