mysql对于auto_increment更新和删除的时候都要进行一些处理,保持已经用过的序号不会重复出现,比如库中原有需要1,2,3,4,5,现在删除了5,再次插入一条数据,序号是6而不是5。这可能是导致速度变慢的原因
mssql好像不支持auto_increment吧,你试试看不用auto_increment列,再测试一次。
这里有mysql的官方测试http://www.mysql.com/information/benchs.html
可以比较一下mysql_odbc_nt4.0和ms-sql_odbc_nt4.0的数据,不过这里是sql7而不是2000。
mssql好像不支持auto_increment吧,你试试看不用auto_increment列,再测试一次。
这里有mysql的官方测试http://www.mysql.com/information/benchs.html
可以比较一下mysql_odbc_nt4.0和ms-sql_odbc_nt4.0的数据,不过这里是sql7而不是2000。
这句话错误。用IDENTITY [ ( seed , increment ),也就是标识
2. 两者的表结构肯定不一样:SqlServer 也支持 auto_increment 吗?
3. Win32 下的 MySQL 肯定比不上 Linux 下的,而且你的是正式版本吗?(免费下载的可能是 alpha 版本)
相信我,当然支持。不然我干嘛加上id这个字段我用的mysql当然是正式稳定版,在mysql网站上下载
在sqlserver建立数据表的时候,当字段类型为int等的时候,下面就会有标识选择行。这就相当于mysql的auto_increment.
CREATE TABLE test (
name varchar(50) NOT NULL,
num int(11) DEFAULT '0' NOT NULL
);下面是测试结果: 比较项目 mysql耗时 sqlserver耗时
连结时间 0.03075 1.60925
插入一万条纪录 2.82545 17.82020
更新一万条纪录 854.32390 54.06806
删除一万条纪录 180.14272 37.29615结果和有id差不多。
大家如果怀疑这个结果,可以亲自测试一下。
PIII667+128M+win2000 adv server+SQL server2000+php4.2.2+apache 2.0.39+MySQL 版本 4.0.1-alpha-maxsqlserver数据库连结花了0.155929923058秒钟!
sqlserver数据库插入10000条纪录花了16.8481429815秒钟!
sqlserver数据库连结花了0.0262340307236秒钟!
sqlserver数据库更新10000条纪录花了55.3983550072秒钟!
sqlserver数据库连结花了0.0223009586334秒钟!
sqlserver数据库删除10000条纪录花了36.8477600813秒钟!mysql数据库连结花了0.00819599628448秒钟!
mysql数据库插入10000条纪录花了4.84794402122秒钟!
mysql数据库更新 太慢了,等了半天还没出来,所以就没测了
mysql数据库连结花了0.00804197788239秒钟!
mysql数据库删除10000条纪录花了250.130182028秒钟!
http://www.code-labs.com/article/articleinfo.php?id=517
我拷贝过来一句话:
而在LINUX下,mysql的性能相对于在WIN32下,又有了一个很大的飞跃。由28秒骤减到10秒。我的linux服务器坏了,哪位兄弟的服务器是linux的,有空请帮忙测试一下。
cr566+RAM192+window2000advserver+php4.2.2+apache1.3.24+mysql4.0.1 alpha+Ie窗 x 4
连接:0.0632779598236
插入:14.1100490093
更新:14.1599799395
删除:13.2482140064如果什么也不开,大概三个数据都在10-13秒上下
大家不要老用 windows系统来测试php+MySql的组合好不好,哪有人会用windows服务器来写php程序,在国外的主机市场,很少看得到windows server+php+mysql的组合,买这种配置的服务器的人都是傻X
sqlserver在windows下的性能
oracle,mysql在linux下的性能
作比较(还有其他数据库系统,例如DB2,informix等)结果,在500并发连接以下,sqlserver只比oracle,mysql稍弱一点点,比其他数据库系统都强!但到了750就开始拉大距离,上了1000以后所有数据库系统都不行了,只有mysql还紧紧地追着oracle,而sqlserver的性能下降的最厉害,到了1200以后,sqlserver成为最后一名,弱于参与测试的所有数据库系统。
另外,Oracle自始至终都是最强悍的,不过mysql始终追得很紧,平均下来,性能上只是在1000并发连接以后距离才与oracle拉大。
测试mysql中你用到了存储过程吗?mysql现在开始支持了吗?应用平台对数据库操作的速度影响是很大的。
另外,楼主的测试脚本本身是解释性的语言它的运行速度就很慢,如果用这个方法来测试的话得到的结论不是很可信。
http://www.yesky.com/20011011/200505.shtml
http://www.yesky.com/20011012/200590.shtml浅妄薄见,望与斟酌
你的测试让我大吃一惊,原来你没有建库,heheto miyostudio(miyo):
如果你提供的这个测试结果属实,那让我对mysql又有了新的信心。也就是说mysql的并发操作强于sqlserver;
我也知道mysql+windows性能和速度肯定比不上mysql+linux,所以也征求各位在linux下面的测试结果。to 版主 _Shakespeare(网络骑士) :
我说的是sqlserver的存储过程,并没有提到mysql的存储过程。如果前者用到存储过程,速度肯定会大大提高。我会测试存储过程的;
还有就是
http://www.yesky.com/20011011/200505.shtml
的测试结果让人怀疑,因为从我上面的结果来看,sqlserver的检索速度在windows应该比mysql快.不知道他们是在怎样的环境下测试的
比较项目 sqlserver存储过程
插入一万条纪录 11.95782
更新一万条纪录 152.47655
删除一万条纪录 133.94971竟然比不用存储过程的时间要长的多。这到底是为什么?
存储过程:
CREATE PROCEDURE test_update
@name varchar(50) ,@num int
as
update test set name=@name where num=@num
GOCREATE PROCEDURE test_insert
@name varchar(50) ,@num int
as
insert into test(name,num) values(@name,@num)GOCREATE PROCEDURE test_delete
@num int
as
delete from test where num=@num
GO而且都已经编译过。执行语句:
mssql_query("exec test_insert 'xxx',$n");
mssql_query("exec test_update 'YYY',$n");
mssql_query("exec test_delete $n");请各位分析原因。
随便问:
mssql_execute()这个函数执行存储过程,如何带上参数?可能用这个函数要快些
那为什么还有windows下面的php+mysql.照你这样说,干脆不要搞什么windows版本的php了。还是期待大家linux下面的测试结果,看能否赶上上面sqlserver的速度
mysql
postgreSQL
mssql
interbase(fire bird)
不过我只会mysql,现在正在学习interbase和mssql,哪位朋友有条件做一下以上的测试?
其实对这个结果,我觉得mysql是免费的,功能是比较弱,用于基于web的数据库是很适合。但是如果要做大型项目,一般都用其他数据库了吧。二来mysql和php结合得很好,单看php不用dl就可以用mysql就知道,而且使用又方便,对于楼主的测试结果那种性能,我觉得如果在要求不是太严格的情况下,还是可以接受的,也不需要就这样就对mysql失去信心这么严重
但毕竟MYSQL是和它搭配的吗