• 14.3.4 Configuring the Memory Allocator for InnoDB 配置内存分配器


    14.3.4 Configuring the Memory Allocator for InnoDB 配置内存分配器

    当InnoDB 被开发,内存分配器提供了操作系统和run-time 库往往缺乏性能和可扩展性。

    当时,没有内存分配器库调整用于多核CPUs.

    因此,InnoDB 实现它的自己的内存分配在内存子系统。

    这个分配器是通过一个单独的互斥保护,这可能是一个瓶颈。

    如今,随着多核系统越来越广泛的应用,如操作系统已经成熟,内存分期已经显著改善。

    新的内存管理器工作的更好,比过去更好的扩展性。 高性能内存分配器包括 Hoard, libumem, mtmalloc, ptmalloc,

    tbbmalloc, and TCMalloc.

    大部分工作,尤其那些内存是频繁被分配和释放的(比如多表关联),收益于使用一个高度调整的内存分配器

    相对于内部。

    你可以控制是否InnoDB 使用它自己的内存分配器或者操作系统的分配器,

    通过设置系统配置参数
    mysql> show variables like ‘%innodb_use_sys_malloc%’;
    +———————–+——-+
    | Variable_name | Value |
    +———————–+——-+
    | innodb_use_sys_malloc | ON |
    +———————–+——-+
    1 row in set (0.00 sec)

    如果设置为ON或者1(默认的),InnoDB 使用malloc 和free 函数依赖操作系统相比

    本身管理内存pools.这个参数不是动态的,只有在系统启动时生效。

    继续使用InnoDB 内存分配器,设置innodb_use_sys_malloc to 0.

    当InnoDB 内存分配器被禁用, InnoDB 忽略 innodb_additional_mem_pool_size的值。

    InnoDB 内存分配器使用额外的内存pool 用于满足分区请求不必到system memory allocator。

    当 InnoDB memory allocator 是被关闭,所有这些分配请求通过系统内存分配器实现

  • 相关阅读:
    python的select和epoll
    ibatis annotations 注解方式返回刚插入的自增长主键ID的值
    java web 项目中获取当前路径的几种方法
    Servlet的监听器
    mybatis-配置文件mybatis-config.xml
    数据库死锁
    JDBC控制事务
    server.xml 解析
    linux下Tomcat 安装后执行startup.sh,出现– Cannot find …bin/catalina.sh
    jni 类初始化失败(nested exception is java.lang.NoClassDefFoundError)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351183.html
Copyright © 2020-2023  润新知