MySQL高效载入数据到MyISAM表的方法
来源:互联网 发布:java线程教程 编辑:程序博客网 时间:2024/05/21 06:24
需求:
数据载入表的过程中,表中的索引要对载入的每行记录检查,导致载入操作会很慢。所以需要使用一些技巧来提速。
方法一:
禁用索引->载入数据->重新启用索引
alter table t disable keys;load data infile '/var/lib/mysql-files/t.txt' into table t;alter table t enable keys;
优缺点分析:
这种方法将构建索引放在数据完全载入表中之后,避免了数据载入过程中的检查,加快了数据载入。并且,这个时候构建索引可以通过排序来构建更加紧凑的索引树。
但是这种方法对唯一索引没有效果,因为disable keys只对非唯一索引有效。
方法二:
1. 使用需要的表结构创建一张表t_new,不包含索引
2. 载入数据到表t_new
3. 使用需要的表结构创建一张表t_new_2 ,包含索引
4. 执行flush tables with read lock;加读锁且刷新
5. 重命名t_new_2表的.frm和.MYI为t_new.frm和t_new.MYI
6. 释放读锁(unlock tables)
7. 使用repair table来修复表
实际操作:
步骤 1、2:
步骤 3:
步骤4 、6 、7:
步骤 5:
最后要记得在/var/lib/mysql/db_name下手动删除t_new_2.MYD文件,原因见下图:
其中,我在看书的时候有两个疑问,一个是repair table到底做了什么,当时在上课,也没有去实践,百思不得其解。晚上到图书馆走了一遍流程问题迎刃而解了:在执行repair table 时下面提示Number of rows changed From 0 to 300024,而在repair之前执行记录统计结果为0,也就是就本例来说,repair把数据恢复了。另一个是关于第3步改文件名的问题,我疑问,改了之后两个.frm和两个.MYI计算机怎么处理。晚上敲了一下问题也解决了,mv命令会覆盖本目录已存在的t_new.frm和t_new.MYI。现在看来这个问题是由于自己对Linux命令mv的不了解造成的。实践很重要!
- MySQL高效载入数据到MyISAM表的方法
- myisam表迁移数据的最快方法
- mysql下如何更改database下所有表的数据引擎--MyISAM 到InnoDB
- mysql更改表引擎INNODB为MyISAM的方法总结
- Mysql 表引擎INNODB 和 MyISAM 的方法总结
- mysql更改表引擎INNODB为MyISAM的方法总结
- 如何高效的载入并组织.x文件数据
- mysql myisam表的repair
- mysql更改引擎(InnoDB,MyISAM)的方法
- mysql更改引擎(InnoDB,MyISAM)的方法
- mysql导出表数据到文件的几种方法
- 自动修复MySQL的myisam表
- 【mysql】MyISAM表的存储格式
- MySQL的MyISAM表使用注意事项
- MySQL 针对 MyISAM 表锁的解决方案
- MySQL的myisam引擎表锁优化
- MySQL数据库InnoDB和MyISAM数据引擎的差别
- MySQL数据库InnoDB和MyISAM数据引擎的差别
- 算法学习---求最大公约数(Gcd算法)
- js中实现继承6种方法总结
- Android性能优化总结
- 那些年我们熬夜打造一可收缩流式标签控件
- 判断点是否在多边形内
- MySQL高效载入数据到MyISAM表的方法
- 利用opencv的FileStorage类实现XML/YAML文件的读写
- 【聚焦Oracle】单行函数
- 一个彻彻底底的水军的ACM校赛感悟~~~
- NGUI之Slider调节音量大小
- 简单新闻管理系统(jsp)
- Android实现Intent传递对象
- Learn UML with JUDE
- 非滤波单目视觉SLAM系统