Archive for 4月, 2011

[难得技术] Mysql的索引测试与sql语句优化

星期二, 4月 26th, 2011

建立测试数据表

CREATE TABLE `milliontest` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`name` CHAR( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' ,
`content` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '',
`time` INT( 11 ) NOT NULL DEFAULT '0',
`lastmodify` DATETIME NOT NULL,
PRIMARY KEY ( `id` )
) ENGINE = Myisam

用上面的语句创建一个测试用的表。表中包含5个字段,自增主键ID,标题名字name,内容content以及创建时间time与最后编辑时间lastmodify,其中time字段用时间戳而编辑时间为年月日格式。由于目前表内没有任何数据,接下来当然是往表里灌数据,灌上100W(唬人用)。

我写了一个php脚本来完成这个任务。代码如下,各位大大不要耻笑:

set_time_limit(0);
$conn = mysql_connect('localhost', 'root', '');
mysql_select_db('test');

$titles 	= array(
'任天堂3DS发售,2000RMB兲朝币',
 '明猪昨天买了飞行俱乐部', '前天第一次玩街霸网战虐人了!'
);
$contents	= array(
'据美国国家地理网站报道,美国“国家地理新闻”网站刊登了过去一周的精彩太空图片。
这些图片集中展现了极光、土卫一“米玛斯”、Abell 383星系团以及好似绿龙般的SH 
2-235星云等壮观景象',
'由于北极气候变暖,大量永冻土带融化,流入海洋。新研究发现,北极部分地区的永
久冻结带每年遭侵蚀的程度最多达到100英尺(约合30米)。');

$max = 1000000;
mysql_query("set names utf8");

for($i = 0; $i < $max; $i++) {
	$tn	= array_rand($titles);
	$cn	= array_rand($contents);
	$time	= time();
	$lastmodify = date('Y-m-d H:i:s');
	$res = mysql_query('insert into milliontest set name="'.$titles[$tn].'",
 content="'.$contents[$cn].'", time="'.$time.'", lastmodify="'.$lastmodify.'"');
	file_put_contents('million_log.txt', $i);
}

花了20多分钟时间数据库里终于有100w的数据了,泪流满面。那么下面就打开mysql终端开始华丽的测试一下。

select * from milliontest where time=1303812283;
/*略去搜索结果*/
146 rows in set (8.16 sec)

一条简单的查询就花了小小的8秒钟时间哦,要是100个人同时访问某个页面而同时运行了这条简单的语句,结果会怎么样咩? :s1hiahia

这里我又做了另一个测试,注意跟上面那条sql语句的区别:

select * from milliontest where time='1303812283';
/*略去搜索结果*/
146 rows in set (55.98 sec)

看到这查询时间,我自己都扭曲了,我只是查询一个想要的结果而已,却花56秒近1分钟的时间来等待查询。所以小提一下sql语句中各位注意一下引号吧。
又做了几组测试,时间多在8秒波动,有空各位自己慢慢测~

现在给time字段加一个索引

mysql> alter table milliontest add index (`time`);
Query OK, 1000000 rows affected (33.88 sec)
Records: 1000000  Duplicates: 0  Warnings: 0

建完索引,继续做一下上面的测试吧,嘻嘻。 :s1kila

mysql> select * from milliontest where time='1303812291';

615 rows in set (0.05 sec)

加了索引后这次花了0.05秒,相对之前的数据,速度提升相当多吧哈哈哈。不过这么简单的查询却花了0.05秒,对于并发量大的时候估计也不乐观咩,咱们试试去掉引号?

mysql> select * from milliontest where time=1303812283;

146 rows in set (0.00 sec)

爽吧!花费时间0.00! :s1nihaha

体会到了索引带来的好处了吧,不过话说我突然想起来,跑去看了一下这张表占的磁盘容量,泪流满面我没找到wamp这个软件吧索引文件丢到哪去了,总之之前我在自己ubuntu下做的测试好像加表数据占了磁盘800M还是多少,忘了

分页的SQL优化(limit优化)

之前在网上看的时候看到很多关于limit优化的文章,不小心看到一篇分页优化,哎哟看完那篇文章之后,我突然恍然大悟,附我跟主管的某段对话:

主管:好像现在后台有点慢?
我:估计是数据正在批量入库的缘故,不快。

但事后我重新测试了下后台,速度还是NN慢。刚好想到某篇分页测试的文章,提到:
select id,name from milliontest limit 0,20;的速度与select id,name from milliontest limit N,20;
不一样,查询结果的速度取决于N,也就是N越大,速度越慢。
嘴巴说没什么用,还是看事实。

mysql> select id,name from milliontest limit 0,20;
20 rows in set (0.00 sec)
而
mysql> select id,name from milliontest limit 100000,20;
20 rows in set (0.25 sec)
再看
mysql> select id,name from milliontest limit 500000,20;
20 rows in set (1.05 sec)

明显查询时间有了小增长吧。后面的时间更恐怖哟。所以很多论坛之类的,数据太久的就不显示出来了,或者加缓存,那是其他的技术咯。 (更多…)

[3DS] 入手日版《飞行俱乐部》~~~顺丰快递超级给力~!!

星期一, 4月 25th, 2011

啊啊啊,昨晚快7点在淘宝下的单,深圳那边过来的,一直以为要到明天才能收到,没想到啊,下午3点多居然送来了!!!!哥哥我太意外啦!!虽然去了20块快递费,但是这速度。航空贱哦! :s1haoxiong

哥哥我拿到包裹的那一刻泪流满面..以后我肯定都选顺丰 :s1niaot

那么放日西图一张,3DS发售两个多月,哥哥我入了4张游戏,现在手上还有3张游戏,纪念一下..

从左至右依次是任天狗+喵,超级街霸4,飞行俱乐部。其中街霸目前累计游戏时间已达50小时,平均每天1小时游戏时间。网络对战胜率31%+,嘻嘻嘻,哥哥我终于小小入门了,本来之前胜率一直是在27%还是多少,周末的时候突然学会了把握距离,所以不小心也第一次虐了别人。 :s1haixiu  明明之前都是我连输7,8局被虐的很惨的说。 :s1zhuangxia

那么再放一张无关图,北京鼓楼一角:

(更多…)

明猪雪地-“禽兽森林”雏形展示,收集游玩癖展开~

星期五, 4月 22nd, 2011

恩…已经一周无更新了。我自己打嘴巴。其实一周无更新,不过小屁站又新增了一点点小东西。嘿嘿嘿。这几天在公司有空的时候偷偷抽空搞的 8)  看首页截图:

多了一个“禽兽森林”,命名来源我最喜欢的游戏之一——《动物之森》,因为游戏里面除了主角之外,都是各种千奇百怪的小动物而闻名世界。因而很多人给这游戏起了个外号:禽兽森林。是游戏界的吸钱怪物。

中间插入一下,关于动物之森,不了解的同学可以想象一下,以WII平台为例,此游戏发售9个月,总共卖出860多万套。而且每月在全球范围内持续有几万套销量,并且维持好几年时间。一个游戏按300RMB算,大家可以自己算算这只怪物的价值。

那么下面简单介绍一下这次本小站新添的小玩意儿,尽管现在它的功能还微乎其微。但是以我一人之力,当然不可能一瞬间就做出完美的东西,来日方长嘛~

由首页点击进入这个“禽兽森林”之后,可以看到森林里有这么几个图标。

暂时还没有做完分类,有空我慢慢抽时间改咯,今晚主要给大家展示一下今天谷歌首页那一如既往令人赞叹的LOGO。

点击最右边的那个图标。

应该可以看到这样一个场景 :dao

这个LOGO是由几张图片,加上divcss,加上javascript写出来的展示块。大家可以把鼠标移动到LOGO上的每一处,应该能够看到相应的很多有趣的场景。 (更多…)

[玩具老龄化] 部分数码玩具疑似即将寿命到头???(内有美女)

星期六, 4月 16th, 2011

去年PSP几个系统按键的排线突然悲剧,换了排线,春节期间回家后发现PSP的Home键又挂了,看着用了5年多的PSP,平时对PSP也不像对NDSL那么爱护有加,已经破破烂烂了…

NDSL也是,卡带插槽里的弹簧已经接近game over,我每次拿卡带都是按一下卡带,然后卡带不会自动弹出,要悲剧的用手生生的把卡带从插槽里硬拔出来 :tt

最后居然轮到我的笔记本了!!啊啊啊啊啊啊,上上个月突然发现光驱读不出光盘了,悲剧啊!我买UCG就是为了看光盘啊啊啊!!然后上个月不知道怎么搞的,好像是突然被我断电?然后蓝牙模块似乎是烧了… :(

但是从上周开始,发现本本好几次我玩的正爽的时候莫名其妙的自动啪的声关机了!!! :?:  连着被搞了几次之后,把几年前用的鲁大师给搬出来,看了下是显卡温度异常。昨晚显卡温度甚至飘到93度啊啊啊啊啊啊啊,要是没开卤大师,估计又要自动关机一次了!看下截图:

上面是刚开机3分钟的显卡温度,记得刚启动时CPU温度35+度,显卡也才47度,我就过3分钟再一看就飘到55度了,其实55度也没啥,因为平时玩模拟器,显卡温度一直保持在75度嘛…但是今天悲剧的发现,我只是开了一个在线视频,显卡温度立马飘到79度啊啊啊啊啊! :cry: (更多…)

[帝都还不适合外拍] 高兴外拍去,悲剧滚回来

星期日, 4月 10th, 2011

坑死爹了!!本来看着窗外的树叶一片一片的绿了,一戳一戳的长大了,密集了,应该是时候出去外拍了。今天准备充足。我被了一麻袋(宜家家居购物袋)的手办准备去给她们外拍。

噢册那..带着最喜欢的“百姬”PVC出门,还好我早先觉得直接放袋子里不靠谱,我把最早包裹着“百姬”的塑料盒子也一起拿出来做保护,才走到公交车站,就被一逆行自行车给撞了!!直接冲着我满满是手办的购物袋冲过来啊!!!啊啊啊啊啊啊,我听见我袋子里百姬的塑料盒咔嚓的声音,我的心都碎了。 :s1fanyanla

低头稍微确认了下,百姬应该有盒子应该无大碍,只是苦了那一堆小扭蛋了。但是对方居然还理直气壮的叫我注意点!!!

啊啊啊啊啊啊!!

 

我脑袋一短路我直接就反问丫的你逆行撞到我你还有理了??我艹%……&&……。 :evil: 骂(爆粗口了)了几句对方理亏也不好说什么,我也不能把对方怎么样,就散了。再次确认了下,还好百姬一点事都没有..  :(

万事大吉也就好了,到了森林公园这个最佳场地之后我悲剧的发现,这里树叶小草都没长齐呢,地上都是枯草,哪里能外拍啦?!! :cry:

于是悲剧的,随便拍几张吧… :(

色彩还调偏了。而且很遗憾,红色右脚三倍速居然 (更多…)

[草莓棉花糖痛车] 超久没更新啦!!明猪(大概)复活!

星期五, 4月 8th, 2011

先来看看前段时间看到,却一直没找着机会分享出来的几张痛车图吧。是我最最最最喜欢的“草莓棉花糖”的LOLI们的痛车呀~!!!赞的我都泪流满面了。

唯独不爽的是右下角有水印,悲剧。

我最喜欢的美羽啊,喜欢的都快要掉渣了. :moe

再来两张,这是何等的威武啊…

(更多…)