详述如何提高MySQL中数据装载效率
摘抄自:http://database.ctocio.com.cn/153/9232653.shtml
很多时候关心的是优化SELECT 查询,因为它们是最常用的查询,而且确定怎样优化它们并不总是直截了当。相对来说,将数据装入数据库是直截了当的。然而,也存在可用来改善数据装载操作效率的策略,其基本原理如下:
成批装载较单行装载更快,因为在装载每个记录后,不需要刷新索引高速缓存;可在成批记录装入后才刷新。
在表无索引时装载比索引后装载更快。如果有索引,不仅必须增加记录到数据文件,而且还要修改每个索引以反映增加了的新记录。
较短的SQL 语句比较长的SQL 语句要快,因为它们涉及服务器方的分析较少,而且还因为将它们通过网络从客户机发送到服务器更快。这些因素中有一些似乎微不足道(特别是最后一个因素),但如果要装载大量的数据,即使是很小的因素也会产生很大的不同结果。我们可以利用上述的一般原理推导出几个关于如何最快地装载数据的实际结论:
LOAD DATA(包括其所有形式)比INSERT 效率高,因为其成批装载行。索引刷新较少,并且服务器只需分析和解释一条语句而不是几条语句。
LOAD DATA 比LOAD DATA LOCAL 效率更高。利用LOAD DATA,文件必须定位在服务器上,而且必须具有FILE 权限,但服务器可从磁盘直接读取文件。利用LOAD DATA LOCAL,客户机读取文件并将其通过网络发送给服务器,这样做很慢。
如果必须使用INSERT,应该利用允许在单个语句中指定多行的形式,例如:
可在语句中指定的行越多越好。这样会减少所需的语句数目,降低索引刷新量。如果使用mysqldump 生成数据库备份文件,应该使用--extended-insert 选项,使转储文件包含多行INSERT 语句。还可以使用- - o p t(优化) ,它启用--extended-insert 选项。反之,应该避免使用mysqldump 的--complete-insert 选项;此选项会导致INSERT 语句为单行,执行时间更长,比不用--complete-insert 选项生成的语句需要更多的分析。
使用压缩了的客户机/服务器协议以减少网络数据流量。对于大多数MySQL客户机,可以用--compress 命令行选项来指定。它一般只用于较慢的网络,因为压缩需要占用大量的处理器时间。
让MySQL插入缺省值;不要在INSERT 语句中指定将以任意方式赋予缺省值的列。平均来说,这样做语句会更短,能减少通过网络传送给服务器的字符数。此外,语句包含的值较少,服务器所进行的分析和转换就会较少。
如果表是索引的,则可利用批量插入(
相关文档:
BIND-DLZ实验:http://bind-dlz.sourceforge.net/
实验环境:RHEL4,BIND-9.5.0-P2.tar.gz(9.4.0以上版本都已含DLZ补丁),Mysql-5.0.56.tar.gz
1、安装mysql(先安装gcc等相关软件包)
#tar zxvf mysql-5.0.56.tar.gz
#cd mysql-5.0.56
#./configure --prefix=/usr/local/my ......
在WindowsXP中打开DOS,通过输入命令“mysql -u root -p”切换到mysql下,切换失败,如下所示:
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\>mysql -u root -p
'mysql' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
......
前提:MySQL中存在一个用户自己建立的数据库,假设为mydb,mydb中有一张用户自己建立的表格,假设名称为mytable
我的前提:MySQL中存在两个数据库,yldb和yldb2,其中yldb数据库中有一张表,名为pet
一.MYSQL的命令行模式的设置:
桌面->我的电脑->属性->环境变量->新建->
PATH=“;path\mysql\bin ......
做软件数据库必不可少,我选择了MySQL。
首先到http://dev.mysql.com/downloads/下载好MySQL5.1和MySQL GUI TOOLS
下到电脑上,然后安装,先装5.1再装gui tools ,一路确定吧。
弄好后,点开MySQL Query Browser,就可以操作数据库了。
MySQL的驱动程序是GUITOOLS安装目录/java/lib下的mysql-connector-java-5.0.4-bin.ja ......
代码如下:
1 String command = " cmd /c C:/Program Files/MySQL/MySQL Server 5.0/bin>mysqldump -h localhost -u root -p aijia > E:/aijia.dmp " ;
2 try {
3 Process process& ......