数据库的某一张表的查询速度会否跟整个数据库的大小相关

时间:2022-06-29 00:50:09
一个数据库的某一张表的查询速度会否跟整个数据库的大小相关?如果相关,会很严重吗?
我现在是这种情况,想测试一张大表的查询速度625万条记录, 整个数据库大小在10g的时候 还是挺快的。 但是 当数据库编程20g的时候,速度就很慢了,大概变成原来的两倍。 这是为什么?(我查询的表的数据量并没有变化,只是我导入了另外几张没有关系的大表)

10 个解决方案

#1


如果你用的是MYISAM存储引擎则没什么影响。
如果你用的是INNODB则文件越大,操作时间越慢,这是由操作系统的文件IO决定的。

#2


数据库越大,表数据文件定位的时间会越长。不过10G到20G并不是数量级的变化呀,估计是你自己台式机的性能问题。我估计这个问题如果放到服务器上去重现,速度不会有太大的差别。

#3


台式机性能是没有问题的。  6核的,8g的内存
我是新手,请问 MYISAM,INNODB  是系统自带的吗?  如果是 ,在什么时候指定?还有是如何指定? 谢谢

#4


引用
请问 MYISAM,INNODB  是系统自带的吗?
 是

引用
 如果是 ,在什么时候指定?
 create table ...时指定

引用
还有是如何指定? 
 create table .... engine=myisam

建议楼主先下载免费的MYSQL官方手册,并粗览一下。 帮助手册是回答这此初学者问题的最好工具。

#5


有没有加索引?

#6


引用 4 楼 acmain_chm 的回复:
引用请问 MYISAM,INNODB  是系统自带的吗? 是

引用 如果是 ,在什么时候指定? create table ...时指定

引用还有是如何指定?  create table .... engine=myisam

建议楼主先下载免费的MYSQL官方手册,并粗览一下。 帮助手册是回答这此初学者问题的最好工具。



恩  正在看,:)  谢谢

#7


对了  还有问题,  mysql 如果有设置主键会否跟oracle 一样默认创建索引?  

#8


假设1个表有用,999个废表。假设那999个表,999个文件从来不会被打开,不会被查询。
速度会否跟整个数据库的大小相关?---我觉得基本无关,或关系很小。

从一个目录中打开一个文件和从一个mount的压缩文件中打开一个文件速度我感觉应该差不多。---myisam和innodb的原理跟此类似吧。

测试的话,可以用命令跟踪mysql占用的内存,和io。也可以细化成,某语句占用的内存和io。来判断。

#9


引用 1 楼 acmain_chm 的回复:
如果你用的是MYISAM存储引擎则没什么影响。
如果你用的是INNODB则文件越大,操作时间越慢,这是由操作系统的文件IO决定的。

我测试T1(1条记录)INNODB。T2(1)INNODB,SELECT * FROM T1;
然后把T2加到500W条记录,再查SELECT * FROM T1;
发现没有任何区别。

版主说的情况,能否详细点。

#10


你数据库里面的数据多了之后,cache/data的比例就降低了,速度势必慢,因为大家一起竞争十分有限的cache和io,你可以试验一下,当然如果你把那些大表放在那里,一点都不访问,那速度肯定不会受到影响了。

#1


如果你用的是MYISAM存储引擎则没什么影响。
如果你用的是INNODB则文件越大,操作时间越慢,这是由操作系统的文件IO决定的。

#2


数据库越大,表数据文件定位的时间会越长。不过10G到20G并不是数量级的变化呀,估计是你自己台式机的性能问题。我估计这个问题如果放到服务器上去重现,速度不会有太大的差别。

#3


台式机性能是没有问题的。  6核的,8g的内存
我是新手,请问 MYISAM,INNODB  是系统自带的吗?  如果是 ,在什么时候指定?还有是如何指定? 谢谢

#4


引用
请问 MYISAM,INNODB  是系统自带的吗?
 是

引用
 如果是 ,在什么时候指定?
 create table ...时指定

引用
还有是如何指定? 
 create table .... engine=myisam

建议楼主先下载免费的MYSQL官方手册,并粗览一下。 帮助手册是回答这此初学者问题的最好工具。

#5


有没有加索引?

#6


引用 4 楼 acmain_chm 的回复:
引用请问 MYISAM,INNODB  是系统自带的吗? 是

引用 如果是 ,在什么时候指定? create table ...时指定

引用还有是如何指定?  create table .... engine=myisam

建议楼主先下载免费的MYSQL官方手册,并粗览一下。 帮助手册是回答这此初学者问题的最好工具。



恩  正在看,:)  谢谢

#7


对了  还有问题,  mysql 如果有设置主键会否跟oracle 一样默认创建索引?  

#8


假设1个表有用,999个废表。假设那999个表,999个文件从来不会被打开,不会被查询。
速度会否跟整个数据库的大小相关?---我觉得基本无关,或关系很小。

从一个目录中打开一个文件和从一个mount的压缩文件中打开一个文件速度我感觉应该差不多。---myisam和innodb的原理跟此类似吧。

测试的话,可以用命令跟踪mysql占用的内存,和io。也可以细化成,某语句占用的内存和io。来判断。

#9


引用 1 楼 acmain_chm 的回复:
如果你用的是MYISAM存储引擎则没什么影响。
如果你用的是INNODB则文件越大,操作时间越慢,这是由操作系统的文件IO决定的。

我测试T1(1条记录)INNODB。T2(1)INNODB,SELECT * FROM T1;
然后把T2加到500W条记录,再查SELECT * FROM T1;
发现没有任何区别。

版主说的情况,能否详细点。

#10


你数据库里面的数据多了之后,cache/data的比例就降低了,速度势必慢,因为大家一起竞争十分有限的cache和io,你可以试验一下,当然如果你把那些大表放在那里,一点都不访问,那速度肯定不会受到影响了。