我想在我的插件软件中使用LOAD DATA INFILE显着加快MySQL导入过程。我听说有些共享主机禁用了此(很棒的)功能。这是对的吗?如果是,为什么他们要这样做,并且有可能以某种方式模仿它吗?我的软件旨在在共享主机上成功运行。
答案 0 :(得分:1)
由于LOAD DATA INFILE
需要特殊特权,因此大多数共享主机提供商都没有提供这些特权:
非
LOCAL
加载操作读取服务器上的文本文件。对于 出于安全原因,此类操作要求您拥有FILE
特权。请参见第6.2.1节“ MySQL提供的特权”。也, 非LOCAL
的加载操作受secure_file_priv
系统的约束 变量设置。如果变量值是非空目录名称, 要加载的文件必须位于该目录中。如果 变量值是空的(不安全),文件只需要 服务器可读。使用
LOCAL
比让服务器访问文件要慢一些 直接,因为文件内容必须通过连接发送 由客户端到服务器。另一方面,您不需要 拥有加载本地文件的FILE
特权。
MySQL文档中有一个section dedicated to optimizing INSERT
,它提示如何加快插入操作。