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 
    
    指向动态库实现内存分配器
    
    
    在其他系统上, 某些链接可能是必要的

  • 相关阅读:
    又是七月的尾巴
    在Macbook Air上安装Archlinux
    又是一年毕业季
    orgpage a static site generator for emacs and org mode
    看完了《三体》三部曲
    暴强的命令行git提交历史记录查询
    xaml的window的AllowsTransparency属性在winxp下好像有bug,不知还有谁遇到过
    Swift 计算字符串展示的区域
    SwiftUI Stack中的View被压缩的效果
    如果git pull拉取分支出错,如何返回
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13350645.html
Copyright © 2011-2022 走看看