我正在组织的多个服务器上实施 Zabbix 监控。我最近遇到了来自 Oracle / MySQL DBA 的一些阻力。他声称以下查询是资源密集型的,因为他的数据库服务器包含数千个表。它是单行的,但我将它分成多行以帮助提高可读性:
echo "select sum($(case "$3" in both|"") echo
"data_length+index_length";; data|index)
echo "$3_length";; free) echo "data_free";; esac)) from
information_schema.tables$([[ "$1" = "all" || ! "$1" ]] ||
echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] ||
echo "and table_name=\"$2\"");" | HOME=/var/lib/zabbix mysql -N
which looks like it reduces to:
select sum(data_length+index_length) from information_schema.tables;
我的具体问题是,这个查询的资源密集程度如何?如果它每分钟运行一次,组织是否应该担心它会对数据库服务器产生性能影响?
作为一名经验丰富的 UNIX/Linux 系统管理员,并且从 MySQL 手册中阅读了一些内容,似乎应该简单地添加从内存中的“information_schema”中检索到的值,但我希望得到一个可以明确描述的答案MySQL 必须采取的内部行动以及相关的影响。