zoukankan      html  css  js  c++  java
  • 14.4.4 Configuring the Memory Allocator for InnoDB InnoDB 配置内存分配器

    14.4.4 Configuring the Memory Allocator for InnoDB  InnoDB 配置内存分配器
    
    当InnoDB 被开发, 内分配齐 提供了与操作系统和运行库往往缺乏在性能和可扩展性,
    
    
    当时, 没有内存分配库调整对于多核CPUs.
    
    因此,InnoDB实现它自己的内存分配器在内存子系统里,
    
    这个分配器是有单个互斥锁保护的, 会成为一个瓶颈。
    
    InnoDB也实现了一个封装的接口在系统分配器(malloc和free) ,同样是有一个单独的互斥锁保护
    
    
    如今,随着多核系统已经变得越来越广泛,如今的操作系统变的成熟,
    
    
    已经显著的改善了操作系统提供的内存分配器。
    
    
    新的内存变的更好,比过去有更多的可扩展性。
    
    高性能内存分配器 包含Hoard, libumem, mtmalloc, ptmalloc, tbbmalloc, and TCMalloc. 
    
    
    大多数的负载,特别是那些频繁分配和释放(比如多表连接),收益于使用
    
    
    一个更高度调优的内存分配器 相对于内部 InnoDB指定的内存分配器
    
    你可以控制 InnoDB 是否使用它自己的内存分配器或者操作系统的内存分配器,
    
    通过设置innodb_use_sys_malloc 
    
    
    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 函数
    
    
    而不是自身管理内存池。这个参数不是动态的, 只有在系统重启时生效,
    
    
    继续使用InnoDB 内存分配器,设置innodb_use_sys_malloc to 0.
    
    
    当InnoDB 内存分配器被禁用,InnoDB 忽略innodb_additional_mem_pool_size 参数的值。
    
    
    InnoDB 内存分配使用一个额外的内存pool 用于满足分配请求不比再到系统内存分配器。
    
    
    当 InnoDB memory allocator  被禁用, 所有这些分配请求通过系统内存分配满足
    
    
    在类Unix 系统使用动态链接,更换内存分配器可以和设置环境变量LD_PRELOAD or LD_LIBRARY_PATH 
    
    指向动态库实现内存分配器
    
    
    在其他系统上, 某些链接可能是必要的

  • 相关阅读:
    小记2_finddata_t结构体
    小记1
    2014-1-2 笔记
    _RecordsetPtr的 open函数
    SAFEARRAY
    用VC实现特定编辑框上对回车键响应
    常用控件的常用消息
    单文档与多文档
    java中得到json格式的数据
    form表单验证时的onsubmit事件
  • 原文地址:https://www.cnblogs.com/zhaoyangjian724/p/6199790.html
Copyright © 2011-2022 走看看