mysql重建表和索引的速度问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 19:04:31
这两天正好数据库模型升级。用的是5.1.23的mysql版本,调整了一下原先表的字段类型大小。具体是把原来的表先改名,然后新建表结构和索引。

例如,原来表名用test1,我先把表名改成test1_old。然后我重新建张test1表和索引(一些值的字段类型和索引值有一些变更)。建好后我再通过
insert into test1 select * from test1_old;
把原来旧表的值插入到新表中去。

而且执行时,如果表数据较大一般大于10G左右,就会出现.TMD的临时文件。
30G的数据要跑24小时。想问下有没有更快的方法?

2003 adserver系统,8G内存,4颗CPU(8核)硬RAID5磁盘
my.ini的相关配置如下,

master-retry-count=0
master_connect_retry=1
slave_net_timeout=30
max_connections=1000
max_connect_errors=20000
max_binlog_size=800M
key_buffer=512M
max_allowed_packet=512M
table_cache=512
sort_buffer_size=64M
join_buffer_size=32M
thread_cache=16
thread_concurrency=32

max_connections = 1000
max_connect_errors=20000
log-slow-queries
long_query_time=0.001
log-queries-not-using-indexes
default-character-set=gbk
skip-character-set-client-handshake
slave-skip-errors=1062,1053,2013,1310
enable-named-pip

30G的数据要跑24小时,哈哈,建议如下的步骤进行:

建表(不要主键);
插入数据;
重新建立索引和主键;

因为在有索引的情况下插入数据时,插入一条就要重新建立索引一次,所以应该在没有任何索引的情况插入数据,然后建立索引就搞一次索引。