如何加速存储过程中的迭代插入过程?

时间:2014-12-18 04:54:37

标签: mysql indexing mmap mysql-proxy

我正在尝试执行一个调用" INSERT"在循环中多次命令。 我想加快插入过程并尝试使用" RAM DISK"为了这。 让我知道在MySql中处理这类问题的方法。

我在Windows 32bit环境

2 个答案:

答案 0 :(得分:2)

我有一个ram磁盘方法,这将有所帮助 您可以为MySQL创建一个插件,它将您的数据转储到ram磁盘文件中,并且您的存储过程可以使用此ram磁盘文件进行查询操作。

  1. 创建一个具有以下功能的MySQL插件。

    • 插件应该有关于ramdisk文件的信息,要么是硬编码的 或通过配置文件阅读。
    • 插件应该有接口来获取数据并将其存储在ram磁盘文件中。
    • 该插件应该能够返回ram-disk文件的路径。
  2. 停止MySQL服务器,将插件二进制文件复制到mysql上的plugin文件夹中,然后重启        MySQL服务器。

  3. 在MySQL中创建函数以公开插件API。

    创建功能add_info_to_ramdisk RETURNS int SONAME' yourPluginName.dll&#39 ;; CREATE FUNCTION get_ramdisk_filename RETURNS String SONAME' yourPluginName.dll';

  4. 更新存储过程以使用插件API并填充ram-disk文件中的数据。

  5. 利用ramdisk文件加速查询性能。

  6. 让我知道这是否会帮助你。

答案 1 :(得分:1)

您可以尝试CreateFileMapping。 CreateFileMapping函数返回文件映射对象的句柄。创建文件视图时将使用此句柄,以便您可以访问共享内存。调用CreateFileMapping时,指定对象名称,要从文件映射的字节数以及映射内存的读/写权限。调用CreateFileMapping的第一个进程创建文件映射对象。

有关详细信息,请参阅this link

切记:为确保其他进程无法写入映射文件的部分,您应该使用独占访问权限打开该文件。