MariaDB性能优化参数设置

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MariaDb(Mysql) 性能调优

性能配置

1. innodb_buffer_pool_size=1G

InnoDB 引擎在内存中有一个缓冲池用于缓存数据和索

,这当然有助于你更快地执行引MySQL/MariaDB 查询语句。

这是InnoDB 最重要的设置,对 InnoDB 性能有决定性的影响。 默认设置只有

128M,所以默认的数据库设置下面 InnoDB 性能很差。

在只有InnoDB 存储引擎的数据库服务器上面,可以设置 60-80%的内存。

2. innodb_buffer_pool_instances=2

内存缓冲池实例数,将 innodb_buffer_pool_size 配置的内存分割成 N 份,此参数当配置内存大小于 1G 时才生效,

当数据库有多个会话进行数据库操作时,用于并行在多个内存块中处理任务,一般配置

值<=服务器 CPU 的个数。

3. innodb_log_buffer_size=32M

日志缓冲区大小 ,一般不用设置太大,能存下 1 秒钟操作的数据日志就行了, mysql 默认1 秒写一轮询写一次日志到磁盘。

4 内存配置相关参数

read_buffer_size=8M

read_rnd_buffer_size=

8M

join_buffer_size=8M

sort_buffer_size=16

M

1.

read_buffer_size=8M

(数据文件存储顺序) 是 MySQL 读入缓冲区的大小, 将对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL 会为它分配一段内存缓冲区, read_buffer_size 变量控制这一缓冲区的大小,如果对表的顺序扫描非常频繁, 并你认为频繁扫描进行的太慢, 可以通过增加该变量值以及内存缓冲区大小提高其性能, read_buffer_size 变量控制这一提高表的顺序扫描的效率数据文件顺序。

2. read_rnd_buffer_size=8M

是 MySQL 的随机读缓冲区大小,当按任意顺序读取行时(列如按照排序顺序)将分配一个随机读取缓冲区, 进行排序查询时, MySQL 会首先扫描一遍该缓冲, 以避免磁盘搜索, 提高查询速度,如果需要大量数据可适当的调整该值,但 MySQL 会为每个客户连接分配该缓冲区所以尽量适当设置该值,以免内存开销过大。表的随机的顺序缓冲提高读取的效率。

3. join_buffer_size=8M

应用经常会出现一些两表(或多表) join 的操作需求, MySQL 在完成某些 join 需求的时候(all row join/all index /scan join )为了减少参与 join 的“被驱动表”的读取次数以提高性能,需要使用到 join buffer 来协助完成 join 操作当 join buffer 太小,MySQL 不会将该 buffer存入磁盘文件而是先将 join buffer 中的结果与需求

join 的表进行操作,然后清空 join buffer中的数据,继续将剩余的结果集写入次

buffer 中,如此往复,这势必会造成被驱动表需要被多次读取,成倍增加 IO 访问,降低效率(执行计划中如果现实 using join buffer )

5. sort_buffer_size=16M

sort buffer 是系统中对数据进行排序的时候用到的 Buffer。sort buffer 同样是针对单个线程的,所以当多个线程同时进行排序的时候,系统中就会出现多个 sort buffer 。我们一般可以通过增大 sort buffer 的大小来提高 order by 或者 group by 的处理性能。系统默认大小时2MB,最大限制和 join buffer 一样。

上述都为每个进程分别进行设置,所以要注意配置大小

6. innodb_flush_log_at_trx_commit=2

当设置为 0,该模式速度最快,但不太安全, mysqld 进程的崩溃会导致上一秒钟所

有事务数据的丢失。

当设置为 1,该模式是最安全的,但也是最慢的一种方式。在 mysqld 服务崩溃或者服务器主机 crash 的情况下, binary log 只有可能丢失最多一个语句或者一个事务。 。

当设置为 2,该模式速度较快,也比 0 安全,只有在操作系统崩溃或者系统断电的情况下,上一秒钟所有事务数据才可能丢失。

7. query_cache_type=1 ,query_cache_size=128M

只有query_cache_type 为 1 时,query_cache_size 才有效。

MYSQL 的查询缓存用于缓存 select 查询结果,并在下次接收到同样的查询请求时,不再执行实际查询处理而直接返回结果,

有这样的查询缓存能提高查询的速度,使查询性能得到优化,

前提条件是你有大量的相同或相似的查询,而很少改变表里的数据,否则没有必要使

用此功能。

并发多线程配置

1. max_connections = 2000

最大连接数,当数据库面对高并发时,这个值需要调节为一个合理的值,才满足业务的并发要求,避免数据库拒绝连接

2. max_user_connections=1000

设置单个用户的连接数。

3. innodb_read_io_threads=16

数据库读操作时的线程数,用于并发

4. innodb_write_io_threads=16

数据库写操作时的线程数,用于并发

5. thread_cache_size=16

thread_cache_size 指令用来设置你服务器缓存的线程数量。当客户端断开连接时,如果当前线程数小于thread_cache_size ,它的线程将被放入缓存中。

物理内存1G —> 8 ,2G —> 16,3G —> 32,>3G —> 64

相关文档
最新文档