SELECT * FROM table1;
INSERT INTO db2.table1 SELECT * FROM db1.table1;像上面最常用的操作,mysql有没有内存大小的限制?比如说在32位机上,有2G内存限制,如果表的大小超过2G呢?另外我想了解的是比如SELECT * FROM table1;对返回的结果集的内存使用方式,如果结果集太大,是怎么处理和放在什么地方的?有没有介绍这方面实现的资料和链接?谢谢各位!!
INSERT INTO db2.table1 SELECT * FROM db1.table1;像上面最常用的操作,mysql有没有内存大小的限制?比如说在32位机上,有2G内存限制,如果表的大小超过2G呢?另外我想了解的是比如SELECT * FROM table1;对返回的结果集的内存使用方式,如果结果集太大,是怎么处理和放在什么地方的?有没有介绍这方面实现的资料和链接?谢谢各位!!
用上面的语句,mysql_store_result会一次性给应用程序返回所有结果集,那就有内存大小的限制;
如果用mysql_use_result,那是从mysql服务器一行一行的取得记录的,又效率太低。所以用INSERT INTO db2.table1 SELECT * FROM db1.table1;
合并两个表,这种方式在32位机器上能处理大表吗?比如table1的大小超过4G没有问题吗?谢谢!
单个表超过4G倒不一定,但是肯定会超过2G
INSERT INTO db2.table1 SELECT * FROM db1.table1;
table1的数据有可能大于4G,这条语句在32位机器上能执行成功吗?
引擎是InnoDB
多谢yueliangdao0608!!我还是不明白:你的意思是合并两个大表不能直接用INSERT INTO db2.table1 SELECT * FROM db1.table1;
而分若干次进行,比如4次,每次合并1/4的记录?如果我都能做到,那mysql为什么做不到呢?我的意思是mysql的实现为什么不能自动分多次合并呢?“比如这块内存你设置了1G。那么你的操作将被分解为4块,每块1G来操作。”是我主动分解为4块?还是mysql自动执行?