场景:复制一张表到另一个数据库 这个表很大 有6千多万行
出现问题:如上截图
解决办法:
方法1
修改 innodb_buffer_pool_size的值为3G:
SET GLOBAL innodb_buffer_pool_size=67108864;(3*1024*1024*1024,不要忘记;号)
原因:表数据量太大了 超过了 缓冲池的大小
select concat(round(sum(DATA_LENGTH/1024/1024/1024),2),'G') as data from TABLES where table_schema='XXX' and table_name='XXXXXX';#1938.86MB
查询得到数据表的大小是25.08G
拓展:mysql调优 查看innodb_buffer_pool_size的状态 值
缓冲池字节大小,单位kb,如果不设置,默认为128M
sql> show global variables like 'innodb_buffer_pool_size';
查看看到设置是128G 也没有超过缓存的大小
sql> show global status like 'Innodb_buffer_pool_pages_data';
sql> show global status like 'Innodb_page_size';
或
sql> use mysql;
sql> select @@innodb_buffer_pool_size;