我现在是这种情况,想测试一张大表的查询速度625万条记录, 整个数据库大小在10g的时候 还是挺快的。 但是 当数据库编程20g的时候,速度就很慢了,大概变成原来的两倍。 这是为什么?(我查询的表的数据量并没有变化,只是我导入了另外几张没有关系的大表)
10 个解决方案
#1
如果你用的是MYISAM存储引擎则没什么影响。
如果你用的是INNODB则文件越大,操作时间越慢,这是由操作系统的文件IO决定的。
如果你用的是INNODB则文件越大,操作时间越慢,这是由操作系统的文件IO决定的。
#2
数据库越大,表数据文件定位的时间会越长。不过10G到20G并不是数量级的变化呀,估计是你自己台式机的性能问题。我估计这个问题如果放到服务器上去重现,速度不会有太大的差别。
#3
台式机性能是没有问题的。 6核的,8g的内存
我是新手,请问 MYISAM,INNODB 是系统自带的吗? 如果是 ,在什么时候指定?还有是如何指定? 谢谢
我是新手,请问 MYISAM,INNODB 是系统自带的吗? 如果是 ,在什么时候指定?还有是如何指定? 谢谢
#4
是
create table ...时指定
create table .... engine=myisam
建议楼主先下载免费的MYSQL官方手册,并粗览一下。 帮助手册是回答这此初学者问题的最好工具。
create table ...时指定
create table .... engine=myisam
建议楼主先下载免费的MYSQL官方手册,并粗览一下。 帮助手册是回答这此初学者问题的最好工具。
#5
有没有加索引?
#6
恩 正在看,:) 谢谢
#7
对了 还有问题, mysql 如果有设置主键会否跟oracle 一样默认创建索引?
#8
假设1个表有用,999个废表。假设那999个表,999个文件从来不会被打开,不会被查询。
速度会否跟整个数据库的大小相关?---我觉得基本无关,或关系很小。
从一个目录中打开一个文件和从一个mount的压缩文件中打开一个文件速度我感觉应该差不多。---myisam和innodb的原理跟此类似吧。
测试的话,可以用命令跟踪mysql占用的内存,和io。也可以细化成,某语句占用的内存和io。来判断。
速度会否跟整个数据库的大小相关?---我觉得基本无关,或关系很小。
从一个目录中打开一个文件和从一个mount的压缩文件中打开一个文件速度我感觉应该差不多。---myisam和innodb的原理跟此类似吧。
测试的话,可以用命令跟踪mysql占用的内存,和io。也可以细化成,某语句占用的内存和io。来判断。
#9
我测试T1(1条记录)INNODB。T2(1)INNODB,SELECT * FROM T1;
然后把T2加到500W条记录,再查SELECT * FROM T1;
发现没有任何区别。
版主说的情况,能否详细点。
#10
你数据库里面的数据多了之后,cache/data的比例就降低了,速度势必慢,因为大家一起竞争十分有限的cache和io,你可以试验一下,当然如果你把那些大表放在那里,一点都不访问,那速度肯定不会受到影响了。
#1
如果你用的是MYISAM存储引擎则没什么影响。
如果你用的是INNODB则文件越大,操作时间越慢,这是由操作系统的文件IO决定的。
如果你用的是INNODB则文件越大,操作时间越慢,这是由操作系统的文件IO决定的。
#2
数据库越大,表数据文件定位的时间会越长。不过10G到20G并不是数量级的变化呀,估计是你自己台式机的性能问题。我估计这个问题如果放到服务器上去重现,速度不会有太大的差别。
#3
台式机性能是没有问题的。 6核的,8g的内存
我是新手,请问 MYISAM,INNODB 是系统自带的吗? 如果是 ,在什么时候指定?还有是如何指定? 谢谢
我是新手,请问 MYISAM,INNODB 是系统自带的吗? 如果是 ,在什么时候指定?还有是如何指定? 谢谢
#4
是
create table ...时指定
create table .... engine=myisam
建议楼主先下载免费的MYSQL官方手册,并粗览一下。 帮助手册是回答这此初学者问题的最好工具。
create table ...时指定
create table .... engine=myisam
建议楼主先下载免费的MYSQL官方手册,并粗览一下。 帮助手册是回答这此初学者问题的最好工具。
#5
有没有加索引?
#6
恩 正在看,:) 谢谢
#7
对了 还有问题, mysql 如果有设置主键会否跟oracle 一样默认创建索引?
#8
假设1个表有用,999个废表。假设那999个表,999个文件从来不会被打开,不会被查询。
速度会否跟整个数据库的大小相关?---我觉得基本无关,或关系很小。
从一个目录中打开一个文件和从一个mount的压缩文件中打开一个文件速度我感觉应该差不多。---myisam和innodb的原理跟此类似吧。
测试的话,可以用命令跟踪mysql占用的内存,和io。也可以细化成,某语句占用的内存和io。来判断。
速度会否跟整个数据库的大小相关?---我觉得基本无关,或关系很小。
从一个目录中打开一个文件和从一个mount的压缩文件中打开一个文件速度我感觉应该差不多。---myisam和innodb的原理跟此类似吧。
测试的话,可以用命令跟踪mysql占用的内存,和io。也可以细化成,某语句占用的内存和io。来判断。
#9
我测试T1(1条记录)INNODB。T2(1)INNODB,SELECT * FROM T1;
然后把T2加到500W条记录,再查SELECT * FROM T1;
发现没有任何区别。
版主说的情况,能否详细点。
#10
你数据库里面的数据多了之后,cache/data的比例就降低了,速度势必慢,因为大家一起竞争十分有限的cache和io,你可以试验一下,当然如果你把那些大表放在那里,一点都不访问,那速度肯定不会受到影响了。