MySQL服务器,mysqld,有许多命令选项和系统变量,可以在启动时设置,以配置其操作。要确定服务器使用的默认命令选项和系统变量值,执行以下命令:
Shell > mysqld——verbose——help
该命令生成一个“所有”的列表mysqld选项和可配置的系统变量。它的输出包括默认选项和变量值,看起来像这样:
FALSE archive ON auto-increment-increment 1 auto-increment-offset 1 autocommit TRUE auto- sp-privileges TRUE避免临时升级FALSE backlog 80 basedir /home/ jun /bin/mysql-5.7/…tmpdir /tmp transaction-alloc-block-size 8192 transaction-isolation REPEATABLE-READ transaction-prealloc-size 4096 transaction-read FALSE transaction-write-set-extraction OFF updatabase -view -with-limit YES validate-user-plugins TRUE verbose TRUE wait-timeout 28800
要查看服务器运行时实际使用的当前系统变量值,请连接到服务器并执行以下语句:
mysql >显示变量;
要查看正在运行的服务器的一些统计和状态指示器,请执行以下语句:
mysql >显示状态;
系统变量和状态信息也可以使用mysqladmin命令:
Shell > mysqladmin extended-status . exe mysqladmin . exe
有关所有命令选项、系统变量和状态变量的完整描述,请参见以下章节:
Performance Schema提供了更详细的监控信息;看到25章,MySQL性能模式.另外,MySQLsys
schema是一组对象,可以方便地访问Performance schema收集的数据;看到26章,MySQL系统模式.
MySQL使用的算法具有很强的可伸缩性,因此通常可以在很少的内存中运行。然而,给MySQL更多内存通常会带来更好的性能。
在优化MySQL服务器时,需要配置的两个最重要的变量是key_buffer_size
和table_open_cache
.在尝试更改任何其他变量之前,您应该首先确信您已经适当地设置了这些变量。
下面的示例指出了不同运行时配置的一些典型变量值。
如果你有至少1-2GB的内存和许多表,并希望在适当数量的客户端上获得最大性能,请使用如下内容:
shell> 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如果您有足够的内存用于所有连接,则性能更好。
内存少而连接多的情况下,可以这样使用:
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 &
如果你在表演集团
或命令
对于比可用内存大得多的表的操作,增加read_rnd_buffer_size
加快排序操作后的行读取速度。
如果您在命令行上为mysqld或mysqld_safe,它只对服务器的调用有效。要在服务器每次运行时使用该选项,请将其放入一个选项文件中。看到第4.2.2.2节,“使用选项文件”.