MySQL 服务器mysqld有许多命令选项和系统变量,可以在启动时设置它们以配置其操作。要确定服务器使用的默认命令选项和系统变量值,请执行以下命令:
$> mysqld --verbose --help
该命令生成所有mysqld 选项和可配置系统变量的列表。它的输出包括默认选项和变量值,看起来像这样:
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命令获得:
$> mysqladmin variables
$> mysqladmin extended-status
有关所有命令选项、系统变量和状态变量的完整描述,请参阅以下部分:
Performance Schema 提供了更详细的监控信息;请参阅第 25 章,MySQL 性能模式。此外,MySQL sys
schema 是一组对象,可以方便地访问 Performance Schema 收集的数据;参见第 26 章,MySQL 系统模式。
MySQL 使用可扩展性很强的算法,所以通常可以用很少的内存运行。然而,通常更好的性能来自于给 MySQL 更多的内存。
在调整 MySQL 服务器时,要配置的两个最重要的变量是key_buffer_size
和
table_open_cache
。在尝试更改任何其他变量之前,您应该首先确信自己已正确设置这些变量。
以下示例指示不同运行时配置的一些典型变量值。
如果您至少有 1-2GB 的内存和许多表,并且希望在中等数量的客户端上获得最佳性能,请使用如下内容:
$> mysqld_safe --key_buffer_size=384M --table_open_cache=4000 \ --sort_buffer_size=4M --read_buffer_size=1M &
如果你只有 256MB 的内存,只有几张表,但你仍然要做很多排序,你可以使用这样的东西:
$> mysqld_safe --key_buffer_size=64M --sort_buffer_size=1M
如果有很多并发连接,交换问题可能会发生,除非mysqld被配置为每个连接使用很少的内存。 如果您有足够的内存用于所有连接, mysqld的性能会更好。
使用很少的内存和很多连接,使用这样的东西:
$> mysqld_safe --key_buffer_size=512K --sort_buffer_size=100K \ --read_buffer_size=100K &
甚至这样:
$> mysqld_safe --key_buffer_size=512K --sort_buffer_size=16K \ --table_open_cache=32 --read_buffer_size=8K \ --net_buffer_length=1K &
如果您正在对比可用内存大得多的表
执行GROUP BY
或
操作,请增加 的值以加快排序操作后读取行的速度。
ORDER BY
read_rnd_buffer_size
如果您在命令行上为 mysqld或mysqld_safe指定一个选项,它仅对服务器的调用有效。要在每次服务器运行时使用该选项,请将其放入选项文件中。请参见第 4.2.2.2 节,“使用选项文件”。