5.1.1 配置服务器
MySQL 服务器mysqld具有许多命令选项和系统变量,可以在启动时进行设置以配置其操作。要确定服务器使用的默认命令选项和系统变量值,请执行以下命令:
shell> mysqld --verbose --help
该命令将生成所有mysqld选项和可配置系统变量的列 table。它的输出包括默认选项和变量值,如下所示:
abort-slave-event-count 0
allow-suspicious-udfs FALSE
archive ON
auto-increment-increment 1
auto-increment-offset 1
autocommit TRUE
automatic-sp-privileges TRUE
avoid-temporal-upgrade FALSE
back-log 80
basedir /home/jon/bin/mysql-5.7/
...
tmpdir /tmp
transaction-alloc-block-size 8192
transaction-isolation REPEATABLE-READ
transaction-prealloc-size 4096
transaction-read-only FALSE
transaction-write-set-extraction OFF
updatable-views-with-limit YES
validate-user-plugins TRUE
verbose TRUE
wait-timeout 28800
要在服务器运行时查看服务器实际使用的当前系统变量值,请连接至该服务器并执行以下语句:
mysql> SHOW VARIABLES;
要查看正在运行的服务器的一些统计信息和状态指示符,请执行以下语句:
mysql> SHOW STATUS;
也可以使用mysqladmin命令获得系统变量和状态信息:
shell> mysqladmin variables
shell> mysqladmin extended-status
有关所有命令选项,系统变量和状态变量的完整说明,请参见以下部分:
可从性能模式中获得更多详细的监视信息。参见第 25 章,MySQL 性能模式。另外,MySQL sys
模式是一组对象,可方便地访问由 Performance Schema 收集的数据。参见第 26 章,MySQL sys 模式。
MySQL 使用可扩展性很高的算法,因此您通常可以用很少的内存来运行。但是,通常可以通过为 MySQL 提供更多内存来获得更好的性能。
调整 MySQL 服务器时,要配置的两个最重要的变量是key_buffer_size和table_open_cache。在尝试更改任何其他变量之前,您首先应该确信自己已经适当设置了这些设置。
以下示例说明了用于不同运行时配置的一些典型变量值。
- 如果您至少有 1-2GB 的内存和许多 table,并且希望在中等数量的 Client 端上获得最佳性能,请使用以下方法:
shell> mysqld_safe --key_buffer_size=384M --table_open_cache=4000 \
--sort_buffer_size=4M --read_buffer_size=1M &
- 如果您只有 256MB 的内存并且只有几个 table,但是您仍然要进行很多排序,则可以使用以下方法:
shell> mysqld_safe --key_buffer_size=64M --sort_buffer_size=1M
如果同时连接数量很多,除非mysqld已配置为每个连接使用很少的内存,否则可能会发生交换问题。如果您有足够的内存用于所有连接,则mysqld的性能会更好。
- 几乎没有内存,却有大量连接,请使用以下命令:
shell> mysqld_safe --key_buffer_size=512K --sort_buffer_size=100K \
--read_buffer_size=100K &
甚至这样:
shell> mysqld_safe --key_buffer_size=512K --sort_buffer_size=16K \
--table_open_cache=32 --read_buffer_size=8K \
--net_buffer_length=1K &
如果要对比可用内存大得多的 table 执行GROUP BY
或ORDER BY
操作,请增加read_rnd_buffer_size的值以加快排序操作后的行读取速度。
如果您在命令行上为mysqld或mysqld_safe指定一个选项,则该选项仅对服务器的调用有效。要在服务器每次运行时使用该选件,请将其放在选件文件中。参见第 4.2.2.2 节“使用选项文件”。