- 博客(8)
- 收藏
- 关注
原创 SetProfiling
在最新版的mysql,5.0.37中加入了一个新的变量:profiling。可以用来查看query执行的细节,方便优化。使用的方法很简单。 mysql>set profiling=1;这样会生成一个information_schema.profiling内存表,此表会一直保存到会话结束。之后所有执行的查询都会再此表中记录一些信息。mysql>select country.nam
2008-04-29 16:27:00 1230
原创 小心太大的query_cache
当query_size过大,比如说有256M或者更多,而又缓存了很多query(Qcache_queries_in_cache),在加上一条插入语句可能使很多的缓存无效,那么插入就会变得很慢,因为有一个使大量缓存无效的过程。可以使用flush query cache清除缓存看一下需要多长时间。解决方法可以减小缓存,或者使用外部的缓存如memcached。
2008-04-29 16:25:00 381
原创 UnionPerformance
mysql的union操作是先做查询然后把结果集求并。union的过程中会使用到临时表,所以当结果集比较小时,union的速度比较快,5万的结果集union all一次大约要1,2秒的时间,但如果是50万的结果集可能就要100秒了。因此如果结果集很大应该尽量避免使用union,尤其是union all,完全可以通过两次查询得到。
2008-04-29 16:23:00 332
原创 建表要使记录尽可能小
建表的时候记录的长度越短越好,越短则IO操作越少,查询越快。能用int就不要用bigint,而如果能用tinyint是最好的。定义varchar时按照业务需要设置长度,不要一律varchar(255),这样虽然并不会增加储存空间,但如以前提过的MySQL使用临时表是会把 varchar字段变成char,这样会增加临时表的大小,降低查询速度。同样的道理,对于不会使用utf8的字段(如:email,
2008-04-18 12:17:00 354
原创 SQL优化 1
一个很简单的SQL: select * from point_site_download_queue where status = 0 order by id asc limit 1; select * from point_site_download_queue where status = 0 order by id asc limit 1;
2008-04-18 12:14:00 296
原创 导入数据时是否需要禁用索引
使用load data导入数据,如果导入的表是MyISAM的,对于空表,MySQL会把所有的非唯一索引进行一次独立的处理,而对于非空的表则会边插入边建索引。所以对于非空的MyISAM表,需要用alter table xxx disable keys禁用索引,导入完成之后再用alter table xxx enable keys打开。 对于innodb,从测试的结果看无论表中是否已有记录,
2008-04-17 16:07:00 825
翻译 MySQL参数调整
原文:http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/我喜欢问别人在安装了MySQL之后,其默认的配置应该怎么改。但令人惊讶的是很多人都无法给出一个合理的理由。虽然MySQL有许多可以调整的变量,但对于大多数的情况它们中只有少数有用。只要把这几个设好了
2008-04-17 15:16:00 364
原创 小心使用MySQL中的in
在MySQL5中,where语句里使用(A,B) in ((X1,Y1),(X2,Y2))索引不会被使用。所以类似select * from t1, t2 where (t1.a, t2.b) in ((1,2),(2,3))的语句是无法使用a,b上的索引的,应该改为select * from t1, t2 where (t1.a = 1 and t2.b = 2)
2008-04-17 15:15:00 387
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人