【发布时间】:2011-11-09 14:16:04
【问题描述】:
统计模块中的插入语句大大降低了我们网站的速度。随着插入更多行,问题变得更糟。当我们截断表格时,网站再次加速。我们希望保留数据,但如果可能的话,让它更快。
db_query("INSERT INTO {accesslog} (title, path, url, hostname, uid, sid, timer, timestamp) values('%s', '%s', '%s', '%s', %d, '%s', %d, %d)", strip_tags(drupal_get_title()), $_GET['q'], referer_uri(), ip_address(), $user->uid, session_id(), timer_read('page'), time());
表结构:
+------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+----------------+
| aid | int(11) | NO | PRI | NULL | auto_increment |
| sid | varchar(64) | NO | | | |
| title | varchar(255) | YES | | NULL | |
| path | varchar(255) | YES | | NULL | |
| url | varchar(255) | YES | | NULL | |
| hostname | varchar(128) | YES | | NULL | |
| uid | int(10) unsigned | YES | MUL | 0 | |
| timer | int(10) unsigned | NO | | 0 | |
| timestamp | int(10) unsigned | NO | MUL | 0 | |
| uri | varchar(255) | YES | | NULL | |
+------------+------------------+------+-----+---------+----------------+
行(当前):522,737类型:MyISAM
大小:127.4 MiB
如果您需要更多信息,请告诉我。
编辑:我对引擎类型进行了一些研究,似乎我得到了混合消息,在这种情况下使用 myisam 或 innodb 更好......有人可以回答吗?
编辑 2:这里是表上的索引:
+-----------+------------+---------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+-----------+------------+---------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| accesslog | 0 | PRIMARY | 1 | aid | A | 522858 | NULL | NULL | | BTREE | |
| accesslog | 1 | accesslog_timestamp | 1 | timestamp | A | 522858 | NULL | NULL | | BTREE | |
| accesslog | 1 | uid | 1 | uid | A | 164 | NULL | NULL | YES | BTREE | |
+-----------+------------+---------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
编辑 3:我的老板和我决定做的不是登录搜索引擎机器人。我仍在尝试找出最好的方法来做到这一点。如果您有任何想法,请告诉我。
【问题讨论】:
-
这可能是一个选项,但这不取决于我。我仍然需要加快速度。
-
@Clive 或 Piwik.
-
尝试分解查询中的每个元素(对
ip_address()、timer_read()的调用等),看看它们是否导致了瓶颈。如果是,请找到一种更好的方法来获取该数据。如果不是,请将站点放在更快的服务器上或定期截断表格,这就是您能做的所有事情 -
@JamWaffles:不知道有人为抬头欢呼:)
标签: mysql database drupal optimization