tempad
ReadyGo!技术成就梦想 >>数据库 >> MySQL数据库中对前端和后台进行系统优化 (1)

MySQL数据库中对前端和后台进行系统优化 (1)

ReadyGo!技术成就梦想 网络搜索 efish 2008-8-2 17:10:51

【-IT技术报道】本文中介绍的系统优化,主要针对前端和后台这两方面(后台方面主要对SQL语句和数据存储进行了优化),下文中我们将介绍一些优化技巧和经验。

技巧:

1. 如何查出效率低的语句?

在MySQL下,在启动参数中设置 --log-slow-queries=,就可以在指定的日志文件中记录执行时间超过long_query_time(缺省为10秒)的SQL语句。你也可以在启动配置文件中修改long query的时间,如:

# Set long query time to 8 seconds

long_query_time=8

2. 如何查询某表的索引?

可使用SHOW INDEX语句,如:

SHOW INDEX FROM

3. 如何查询某条语句的索引使用情况?

可用EXPLAIN语句来看一下某条SELECT语句的索引使用情况。如果是UPDATE或DELETE语句,需要先转换为SELECT语句。

4. 如何把导出INNODB引擎的内容到错误日志文件中?

我们可以使用SHOW INNODB STATUS命令来查看INNODB引擎的很多有用的信息,如当前进程、事务、外键错误、死锁问题和其它一些统计数据。如何让该信息能记录在日志文件中 呢?只要使用如下语句创建innodb_monitor表,MySQL就会每15秒钟把该系统写入到错误日志文件中:

CREATE TABLE innodb_monitor (a INT) ENGINE=INNODB;

如果你不再需要导出到错误日志文件,只要删除该表即可:

DROP TABLE innodb_monitor;

5. 如何定期删除庞大的日志文件?

只要在启动配置文件中设置日志过期时间即可:

expire_logs_days=10

注意事项:

1. 重点关注索引

下面以表TSK_TASK表为例说明SQL语句优化过程。TSK_TASK表用于保存系统监测任务,相关字段及索引如下:

ID:主键;

MON_TIME:监测时间;建了索引;

STATUS_ID:任务状态;与SYS_HIER_INFO.ID建立了外键关系。

注MySQL自动会为外键建立索引,在本次优化过程中,发现这些自动建立的外键索引会对SQL语句的效率产生不必要的干扰,需要特别注意!

首先,我们在日志文件中查到下面语句的执行比较慢,超过10秒了:

# Query_time: 18 Lock_time: 0 Rows_sent: 295 Rows_examined: 88143

select * from TSK_TASK WHERE STATUS_ID = 1064 and MON_TIME >= "2007-11-22" and MON_TIME < "2007-11-23";

1 2 >>

[1]  [2]  上一页  下一页
责任编辑: efish 参与评论 查找更多:
相关文章
巧用MySQL InnoDB引擎锁机制解决死锁问题 (1) 巧用MySQL InnoDB引擎锁机制解决死锁问题 (1)
一种特别简单的MySQL数据库安装方法 一种特别简单的MySQL数据库安装方法
实例讲解如何配置MySQL数据库主从复制 (1) 实例讲解如何配置MySQL数据库主从复制 (1)
MySQL存储过程SAVEPOINT ROLLBACK to MySQL存储过程SAVEPOINT ROLLBACK to
创建Bitmap_Join_Indexes中的约束与索引 创建Bitmap_Join_Indexes中的约束与索引
在MySQL数据库中应当如何关闭错误提示音 在MySQL数据库中应当如何关闭错误提示音
怎样才能解决MySQL 5.0.16的乱码问题 怎样才能解决MySQL 5.0.16的乱码问题
放弃连接消息出现在错误日志中的主要原因 放弃连接消息出现在错误日志中的主要原因
某些更改的非事务性表不能被回滚的现象 某些更改的非事务性表不能被回滚的现象
实例讲解MySQL数据库中应当如何建立外键 实例讲解MySQL数据库中应当如何建立外键
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的ReadyGo.com.cn

分类导航
ReadyGo!技术成就梦想