免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7450 | 回复: 10
打印 上一主题 下一主题

mysql与pgsql的一个对比测试 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-07 22:39 |只看该作者 |倒序浏览
实际环境是一个黄页数据库,170万左右数据,两个主要数据表,其中一个表压力特别大,查询有时候很慢。
很多动态的东西,生成静态页面比较烦,squid呢,又有比较多的更新,总之是懒。思路一直想从数据库本身着手。
今天简单测试了下,主要是简单对比下,测试过程和方法都欠严谨,发出来做参考。

数据库结构如下:
CREATE TABLE IF NOT EXISTS `list` (
  `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
  `cate` tinyint(3) unsigned NOT NULL,
  `subcate` smallint(5) unsigned NOT NULL,
  `province` tinyint(5) unsigned NOT NULL,
  `city` smallint(12) unsigned NOT NULL,
  `name` varchar(42) COLLATE gb2312_bin NOT NULL,
  PRIMARY KEY (`id`),
  KEY `cate` (`cate`),
  KEY `subcate` (`subcate`),
  KEY `province` (`province`),
  KEY `city` (`city`)
) ENGINE=MyISAM ;

sql语句
结果数返回值mysqlpgsql较优
select count(id) as count from listNull1659811Null15msNull
select count(id) as count from list where province=17Null198930Null188msNull
select count(id) as count from list where cate=35Null122973Null94msNull
select count(id) as count from list where province=17Null23196Null109msNull
select * from list limit 10000,100100/4ms15msmysql
select * from list limit 800000,100100/278ms94mspgsql
select * from list limit 1600000,100100/560ms188mspgsql
select * from list where province=17 limit 10000,100100/44ms31mspgsql
select * from list where province=17 limit 90000,100100/394ms93mspgsql
select * from list where province=17 limit 190000,100100/854ms156mspgsql
select * from list where cate=35 limit 10000,100100/45ms47msmysql
select * from list where cate=35 limit 60000,100100/271ms63mspgsql
select * from list where cate=35 limit 120000,100100/536ms109mspgsql
select * from list where province=17 and cate=35 limit 1000,100100/5ms31msmysql
select * from list where province=17 and cate=35 limit 12000,100100/223ms78mspgsql
select * from list where province=17 and cate=35 limit 23000,100100/553ms109mspgsql


注:1、mysql与pgsql语法的少许不一致,如limit用法的不同,上述以mysql为准
     2、mysql时间以phpmyadmin为准,pgsql时间以pgAdmin III时间为准
     3、测试时间以首次运行为准,运行前均优化或者整理数据表
     4、测试环境为windows xp sp2,T7500 CPU+2G内存

测试的16个sql语句就是目前瓶颈所在。对于我来说,可能pgsql更适合点。:mrgreen:


测试结果:http://docs.google.com/Doc?docid=0AbxR-4BqL-UpZGhqanoyOV8wZ2dtamNrZjU

论坛徽章:
0
2 [报告]
发表于 2009-10-08 07:20 |只看该作者
这个好详细

论坛徽章:
8
综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-09-14 06:20:00金牛座
日期:2014-10-10 11:23:34CU十二周年纪念徽章
日期:2013-10-24 15:41:34酉鸡
日期:2013-10-19 10:17:1315-16赛季CBA联赛之北京
日期:2017-03-06 15:12:44
3 [报告]
发表于 2009-10-08 08:17 |只看该作者
用自己的环境做测试
很不错

论坛徽章:
0
4 [报告]
发表于 2009-10-08 08:28 |只看该作者
不错不错,有心人啊

论坛徽章:
0
5 [报告]
发表于 2009-10-08 09:15 |只看该作者
学习了,收藏

论坛徽章:
0
6 [报告]
发表于 2009-10-08 10:34 |只看该作者
那些limit语句只要换种写法,mysql效率就和pgsql差不多了

论坛徽章:
0
7 [报告]
发表于 2009-10-08 10:49 |只看该作者
这个应该和环境有关

论坛徽章:
0
8 [报告]
发表于 2009-10-08 18:44 |只看该作者
原帖由 voxxu 于 2009-10-8 10:34 发表
那些limit语句只要换种写法,mysql效率就和pgsql差不多了

order by ?

论坛徽章:
0
9 [报告]
发表于 2009-10-09 18:01 |只看该作者
对于MySQL应用优化中有一条是把Limit转化为between ... and 相应的操作。
MySQL的分页处理,也是需要优化的。
另外如果可能可以可以配置文件贴出来学习一下。

论坛徽章:
0
10 [报告]
发表于 2009-10-09 18:52 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP