分析数据的时候innodb插入太费时间需要在导入前将innodb转化为myisam
如果导出的innodb表带有create与drop语句的话就很蛋碎
解决方法1:对sql文件做sed替换掉innodb字段,但是当sql文件巨大的时候,这个方法明显很浪费时间
而且sed替换的时候是复制一份文件的,大文件的情况下效率很低
解决方法2:这个方法是以前遇到的一个坑的时候发现的.
有一次我导一个必须用innodb的表,临时用了一个不知道谁搭建的数据库
代码测试sql回滚的时候发现总是失败,最后show create table的时候发现表是myisam的, 我详细检查了创建语句和my.cnf都没发现问题
想了一下应该是这个mysql是编译为只支持myisam的版本
所以解决方法2就是 使用一个只支持myisam的版本
专门编译个mysql也要点时间,查了下mysql配置文件里支持不启用inondb
参考
multi方式启动的mysql配置里增加
-
[mysqld6]
-
server-id=1006
-
user=mysql
-
socket=/var/lib/mysql/mysql_isamonly.sock
-
pid-file=/var/run/mysqld/mysqld_isamonly.pid
-
datadir=/data/mysql/mysqld6
-
character-set-server=utf8
-
skip-name-resolve
-
symbolic-links=0
-
port=3306
-
-
max_connect_errors=64
-
back_log=1024
-
max_connections=512
-
thread_cache_size=16
-
table_open_cache=512
-
max_allowed_packet=33554432
-
max_heap_table_size=268435456
-
tmp_table_size=268435456
-
query_cache_size=134217728
-
-
-
# InnoDB set
-
skip-innodb
-
default-storage-engine = MyISAM
-
innodb=OFF
-
-
# MyISAM set
-
concurrent_insert=2
-
key_buffer_size=134217728
-
read_buffer_size=4194304
-
read_rnd_buffer_size=6291456
测试生效,指定建立innodb的表创建后实际为myisam
阅读(1535) | 评论(0) | 转发(0) |