龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php使用mysql内存表做session存储(2)

时间:2014-06-27 15:00来源:网络整理 作者:网络 点击:
分享到:
将MySQL实现的数据库引擎改为 MyISAM(依然为 并发 30 测试 10000 次) 结果为: Requests per second: 440.17 [#/sec] (mean)Percentage of the requests served within a certain time (

将MySQL实现的数据库引擎改为 MyISAM(依然为 并发 30 测试 10000 次) 结果为:

Requests per second:    440.17 [#/sec] (mean)
Percentage of the requests served within a certain time (ms)
50%     62
66%     62
75%     78
80%     78
90%     78
95%     78
98%     78
99%     78
100%    640 (longest request)

为MyISAM表的 time 列增加索引(因为 会话表 读写次数几乎相等,因此应该效果不明显),结果为:

Requests per second:    441.08 [#/sec] (mean)
Percentage of the requests served within a certain time (ms)
50%     62
66%     62
75%     78
80%     78
90%     78
95%     78
98%    109
99%    109
100%    156 (longest request)

结论:

MemCache做会话效率最高,也最灵活,但目前尝不支持查看谁在线等功能,附加的,只能自己增加一个数组记录在线用户、以及最后活跃时间并实现gc等。

MySQL内存表做会话效率也相当的高,另外一个有点是,MySQL内存表似乎更稳定,longest request (125ms)明显的短于 MemCache的(328ms)。不过缺点是,存储的字段数以及字段长度受限。

MySQL MyISAM表做会话在这里居然也达到了440的rps,真不简单。不过您要是等半个小时在测试一次,您就会明白MyISAM表的缺点了,页面几乎崩溃。MyISAM表的缺点是,一旦其中有较多的碎片,这个数据库几乎都不可用了,您注释掉 gc 的代码在这里貌似可以获得更好的效率表现(^_^、当然也可以定时的Optimizer,概率触发或者Cron定时启动也不错)

MyISAM表对time列增加索引对每秒完成的请求数没什么影响,不过有一点需要注意的是,增加索引后,每次完成 request的时间更均匀了,longest request从640ms跌到了156ms。为time列增加索引有助于让完成请求的时间变均匀。

测试平台:

Acer Aspire 4520G: CPU:AMD Athlon 64 * 2 TK-55
RAM: IG
OS: Windows XP sp2
Web Server: Apache 2.26
PHP: PHP5.25

精彩图集

赞助商链接