群晖自带的Mariadb参数优化

群晖自带的mariadb的性能,非常的差查询万行级别的表就需要大概 3 秒的时间。所以相关的参数是需要进行优化的,这里为了存档就,直接贴一份现在的配置。来作为备份。

[mysqld]
bind-address = 0.0.0.0
socket = /run/mysqld/mysqld10.sock
pid-file = /run/mysqld/mysqld10.pid
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 64M
table_open_cache = 4000
table_open_cache_instances = 32
read_buffer_size = 1M
read_rnd_buffer_size = 1M
net_buffer_length = 8K
thread_stack = 512K
innodb_data_home_dir = /var/packages/MariaDB10/target/mysql
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /var/packages/MariaDB10/target/mysql
innodb_buffer_pool_size = 512M
innodb_log_file_size = 128M
innodb_flush_log_at_trx_commit = 0
#innodb_lock_wait_timeout = 50
innodb_file_per_table = 1
synology_password_check = FORCE_PLUS_PERMANENT

slow_query_log = OFF
query_cache_type = ON
query_cache_size = 64M
query_cache_limit = 128M
#max_heap_table_size = 64M
long_query_time = 3

更新

  1. max_allowed_packet:您已经设置为1073741824,这是合适的值,无需更改。
  2. bind-address:您已将其设置为0.0.0.0,这意味着MySQL将监听所有可用的IP地址。这在大多数情况下是可以接受的。
  3. key_buffer_size:您已将其设置为256M,这是合适的值,无需更改。
  4. table_open_cache:您已将其设置为2000,这是合适的值,无需更改。但是,您可以尝试将table_open_cache_instances设置为更高的值,例如32,以更好地利用多核处理器。
  5. innodb_buffer_pool_size:您已将其设置为1G,这是合适的值,无需更改。
  6. innodb_log_file_size:您已将其设置为128M,这是合适的值,无需更改。
  7. innodb_flush_log_at_trx_commit:您已将其设置为0,这意味着InnoDB将延迟将日志写入磁盘,可以提高性能。但是,这也会增加数据丢失的风险。如果您对数据的可靠性要求较高,可以将其设置为1。
  8. slow_query_log:您已将其设置为ON,这是合适的值,无需更改。但是,请确保定期检查慢查询日志并优化查询。
  9. long_query_time:您已将其设置为5,这意味着查询执行时间超过5秒将被记录为慢查询。您可以根据应用程序的需求和查询的复杂性来调整此值。
  10. max_allowed_packet设置为1GB,这个值比较大,意味着MySQL可以处理比较大的数据包。这对于处理大量的二进制数据(如BLOB或图片)非常有用。
  11. local-infile=1表示MySQL可以使用LOAD DATA LOCAL INFILE命令从本地文件中加载数据。这个选项在某些情况下可能会有安全问题,因为它允许用户向数据库中加载任意文件。如果你不需要使用这个功能,可以将它设置为0。
  12. bind-address=0.0.0.0表示MySQL会绑定到所有可用的IP地址,这样可以让远程客户端连接到MySQL。如果你只需要本地访问MySQL,可以将它设置为127.0.0.1
  13. key_buffer_size=256M表示使用的MyISAM索引缓存大小。如果你的表使用的是InnoDB引擎,这个选项不起作用。
  14. max_allowed_packet=64M表示MySQL可以处理的最大数据包大小。这个值可以根据你的需要进行调整。
  15. table_open_cache=2000表示在内存中缓存打开表的数量。这个值可以根据你的表数量进行调整。
  16. innodb_buffer_pool_size=1G表示使用的InnoDB缓存池大小。这个值应该根据你的数据量进行调整,一般建议设置为系统内存的70%-80%。
  17. innodb_log_file_size=128M表示InnoDB日志文件的大小。这个值可以根据你的需要进行调整,一般建议设置为1GB左右。
  18. innodb_flush_log_at_trx_commit=0表示InnoDB不会在每次事务提交时强制刷新日志文件,可以提高性能。不过,这也意味着在发生系统崩溃时可能会有数据丢失的风险。如果你需要更高的数据安全性,可以将这个值设置为1。
  19. slow_query_log=ON表示启用慢查询日志,可以帮助你找到执行时间较长的SQL语句进行优化。
  20. long_query_time=5表示查询执行超过5秒钟的语句会被记录到慢查询日志中。你可以根据需要进行调整,一般建议设置为1秒钟左右。
[mysqld]
max_allowed_packet = 1073741824
; local-infile = 1
bind-address = 0.0.0.0
key_buffer_size = 128M
max_allowed_packet = 256M
table_open_cache = 2000
table_open_cache_instances = 32
read_buffer_size = 1M
read_rnd_buffer_size = 1M
net_buffer_length = 8K
thread_stack = 256K
innodb_buffer_pool_size = 2G
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 1
slow_query_log=ON
long_query_time=5
; innodb_file_per_table = 1
query_cache_type = ON
query_cache_size = 64M
query_cache_limit = 128M
max_heap_table_size = 64M

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注