我写了一个数据密集型网站,但phpmyadmin告诉我,在24天内已经有10亿个查询。 这似乎有点高。
我知道使用这个网站的人并不多,因为它是活的,实际上没有任何数据。 从我一直在进行testing的查询中,我预计会有成千上万的东西。
有什么问题吗?
编辑:查询的数量似乎以500 /秒的速度增长。 这对我来说都是非常新的,所以我不知道是否有什么错。
MySQL将在内部调用查询。 事实上,你在MySQL中做的任何事情都是一个查询。
如果打开通用日志或慢速查询日志,则所有mysqld都会被logging下来。
如果您启用了–log-queries-not-using-indexes ,则不涉及索引的所有内容都将落在慢日志中。
假设你运行这个查询:
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | annarbor | | dude | | example | | garbage | | lovesh | | mysql | | performance_schema | | replagdb | | stuff | | test | | tostinni | | wordpress | | zipcodes | +--------------------+ 14 rows in set (0.06 sec)
是的,SHOW DATABASES; 是一个查询。 其实什么information_schema相当于???
mysql> select schema_name "Database" from information_schema.schemata; +--------------------+ | Database | +--------------------+ | information_schema | | annarbor | | dude | | example | | garbage | | lovesh | | mysql | | performance_schema | | replagdb | | stuff | | test | | tostinni | | wordpress | | zipcodes | +--------------------+ 14 rows in set (0.08 sec)
表information_schema.schemata是否有索引?
mysql> show create table information_schema.schemata\G *************************** 1. row *************************** Table: SCHEMATA Create Table: CREATE TEMPORARY TABLE `SCHEMATA` ( `CATALOG_NAME` varchar(512) NOT NULL DEFAULT '', `SCHEMA_NAME` varchar(64) NOT NULL DEFAULT '', `DEFAULT_CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '', `DEFAULT_COLLATION_NAME` varchar(32) NOT NULL DEFAULT '', `SQL_PATH` varchar(512) DEFAULT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8 1 row in set (0.00 sec)
不,不是的。 所以,SHOW DATABASES; 将登陆一个通用的日志和缓慢的日志(使用–log-queries-not-using-indexes启用)
因此,我们不认为构成查询的许多操作可能只是查询,而是mysqld的内部。
如果您正在使用任何连接到mysqld的监视工具,那么这也会在查询中增加计数。
例:
mysql> show global status like 'uptime'; select * from information_schema.global_status where variable_name='uptime'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Uptime | 613 | +---------------+-------+ 1 row in set (0.00 sec) +---------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +---------------+----------------+ | UPTIME | 613 | +---------------+----------------+ 1 row in set (0.00 sec)
只要检索mysqld的正常运行时间就是一个查询。 在内部,MySQL如何计算正在执行的查询? 以下是两个状态variables,可能会说明一些情况:
查询 :服务器执行的语句数量。 这个variables包括在stored procedures中执行的语句,而不像Questionsvariables。 它不计算COM_PING或COM_STATISTICS命令。
问题 :服务器执行的语句数。 这与查询variables不同,只包括由客户端发送到服务器的语句,而不包含在stored procedures中执行的语句。 该variables不计算COM_PING,COM_STATISTICS,COM_STMT_PREPARE,COM_STMT_CLOSE或COM_STMT_RESET命令。
如果您的MySQL服务器被监控,请不要担心,因为调用状态variables的监控在内部运行查询以检索请求的数据。
24天内是10亿
对于一个正在被监视的MySQL实例,这些数字根本不会牵强。
如果您使用的是MySQL Workbench,MySQL Administrator或phpMyAdmin,则这些产品生成或更新的任何页面都将召唤这些小状态查询并快速运行数字。