如何确定MySQL中的全局和线程缓冲区大小?

如何确定MySQL中的全局和线程缓冲区大小?,mysql,google-cloud-sql,Mysql,Google Cloud Sql,我目前正在调试与cloudsql mySQL数据库相关的一些性能问题,并希望调查其配置参数 在云sql文档中可以找到以下注释: “: 要确定可为此标志设置的最大值,请 基本公式如下: 可用RAM=全局缓冲区+(线程缓冲区x最大连接数) max_connections=(可用RAM-全局缓冲区)/线程缓冲区 要获取缓冲区及其值的列表:显示变量,如“%buffer%”;为其他需要缓冲区的进程留出一些空间 记忆。” 但是,运行sql命令会产生以下输出: mysql>显示像“%buffer%”这样的变量

我目前正在调试与cloudsql mySQL数据库相关的一些性能问题,并希望调查其配置参数

在云sql文档中可以找到以下注释:

“:

要确定可为此标志设置的最大值,请 基本公式如下:

可用RAM=全局缓冲区+(线程缓冲区x最大连接数)

max_connections=(可用RAM-全局缓冲区)/线程缓冲区

要获取缓冲区及其值的列表:
显示变量,如“%buffer%”;
为其他需要缓冲区的进程留出一些空间 记忆。”

但是,运行sql命令会产生以下输出:

mysql>显示像“%buffer%”这样的变量;
+-------------------------------------+----------------+
|变量名称|值|
+-------------------------------------+----------------+
|批量插入缓冲区大小8388608|
|innodb_缓冲区_池_块_大小| 55574528|
|innodb_缓冲区_池_转储_关闭|打开|
|innodb|u buffer|u pool|u dump|u立即关闭|
|innodb缓冲池转储pct 25|
|innodb_buffer_pool|filename|ib_buffer_pool|
|innodb_buffer_pool_in_core_file|ON|
|innodb|u缓冲区|u池|u实例| 1|
|innodb缓冲池加载中止关闭|
|innodb_buffer_pool_load_at_startup|ON|
|innodb_缓冲区_池_立即加载|关闭|
|innodb_缓冲区_池|大小| 55574528|
|innodb_更改_缓冲区_最大|u大小| 25|
|innodb|u change|u buffering|all|
|innodb_日志_缓冲区|16777216|
|innodb_排序_缓冲区|u大小1248576|
|连接缓冲区大小262144|
|键缓冲区大小| 8388608|
|myisam_排序_缓冲区|8388608|
|净缓冲区长度16384|
|预加载缓冲区大小32768|
|读取缓冲区大小131072|
|读取缓冲区大小262144|
|排序缓冲区大小262144|
|sql_缓冲区|结果|关闭|
+-------------------------------------+----------------+
一组25行(0.02秒)
我不明白该在公式中插入哪些值。哪些值对应于全局缓冲区和线程缓冲区?

我发现下面列出了哪些是全局缓冲区和线程缓冲区变量,它们是:

  • 全局缓冲区:

    key_buffer_size
    innodb_buffer_pool_size
    innodb_log_buffer_size
    innodb_additional_mem_pool_size
    net_buffer_size
    query_cache_size
    
  • 线程缓冲区:

    sort_buffer_size
    myisam_sort_buffer_size
    read_buffer_size 
    join_buffer_size
    read_rnd_buffer_size
    thread_stack
    

MySQL内存使用的每个公式都有缺陷。有些是每连接一次,有些是每查询一次,有些是每子查询一次,有些是动态扩展的,等等。没有人会同时遇到所有最坏的情况。因此,即使配方奶粉不完整,配方奶粉也会超过RAM大小,这是非常正常和安全的。