zoukankan      html  css  js  c++  java
  • 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 是被关闭,所有这些分配请求通过系统内存分配器实现

  • 相关阅读:
    笔记04_正确使用Heterogeneous元件
    java网络通信:伪异步I/O编程(PIO)
    java网络通信:异步非阻塞I/O (NIO)
    lua源码学习篇二:语法分析
    lua源码学习篇三:赋值表达式解析的流程
    java网络通信:netty
    lua源码学习篇一:环境部署
    lua源码学习篇四:字节码指令
    java网络通信:同步阻塞式I/O模型(BIO)
    前端项目开发流程
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351183.html
Copyright © 2011-2022 走看看