Documentation Home

5.1.1 配置服务器

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 sysschema 是一组对象,可以方便地访问 Performance Schema 收集的数据;参见第 26 章,MySQL 系统模式

MySQL 使用可扩展性很强的算法,所以通常可以用很少的内存运行。然而,通常更好的性能来自于给 MySQL 更多的内存。

在调整 MySQL 服务器时,要配置的两个最重要的变量是key_buffer_sizetable_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 BYread_rnd_buffer_size

如果您在命令行上为 mysqldmysqld_safe指定一个选项,它仅对服务器的调用有效。要在每次服务器运行时使用该选项,请将其放入选项文件中。请参见第 4.2.2.2 节,“使用选项文件”