【问题标题】:How to speedup the iterative insertion process in a stored procedure?如何加快存储过程中的迭代插入过程?
【发布时间】:2014-12-18 04:54:37
【问题描述】:

我正在尝试执行一个在循环中多次调用“INSERT”命令的存储过程。 我想加快插入过程并尝试为此使用“RAM DISK”。 告诉我在MySql中处理此类问题的方法。

我在windows 32bit环境

【问题讨论】:

    标签: mysql indexing mmap mysql-proxy


    【解决方案1】:

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

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

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

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

      CREATE FUNCTION add_info_to_ramdisk RETURNS int SONAME 'yourPluginName.dll'; CREATE FUNCTION get_ramdisk_filename RETURNS String SONAME 'yourPluginName.dll';

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

    5. 利用 ramdisk 文件提高查询性能。

    如果这对您有帮助,请告诉我。

    【讨论】:

      【解决方案2】:

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

      更多详情请咨询this link

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

      【讨论】:

      猜你喜欢
      • 2016-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      • 2015-01-14
      • 1970-01-01
      相关资源
      最近更新 更多