龙空技术网

MySQL如何优化

南京路老R 70

前言:

如今姐妹们对“数据库连接数量怎么算”大约比较重视,咱们都需要剖析一些“数据库连接数量怎么算”的相关知识。那么小编也在网摘上网罗了一些有关“数据库连接数量怎么算””的相关知识,希望大家能喜欢,小伙伴们一起来了解一下吧!

#挑战30天在头条写日记#

1、常用工具

2、mysql日志

错误日志

错误日志是MySQL中最重要的日志之一,它记录了当MySQL启动和停止时、以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,可以首先查看此日志

BINLOG

BINLOG记录了所有的DDL(数据定义语言)语和 DML(数据操纵语言)语,但是不包括数据查询语句。此日志对于灾难时的数据恢复起着极其重要的作用,MySOL 的主从复制,就是通过该binlog实现的。

mysqlbinlog ../data/mysql-log.000001 -vv

查询日记

记录了所有的查询语句

慢查询日记

大家都知道慢查是我们开发过程中是尤为重视的,不能出现慢查,当我们发现查询时间比较长些,首先要看的就是是否有慢查询

这个日记记录了所有执行时间超过参数long_query_time 设置值并且扫描记录数不小于min_examined_row_limit 的所有的 SQL语的日志。long_query_time 默认为10秒,最小为0,精度可以到微秒。用于记录查询效率比较低的语句。

3、MySQL的复制

复制是指将主数据库的 DDL和DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。MySQL 支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器的主库实现链状复制。

l.grant replication slave on ** to iuao@'192.168.19213' identified byliugao'2.change master to master host= '192.168.192.130' master_user= liugao'master_password=liugao', master log_file=mysqlbin.000001master_log_pos=413;

复制的原理

4、定位低效率执行SQL

慢查询日志:通过慢查询日志定位那些执行效率较低的 SQL语,用--logslow-queries[=file name] 选项启动时,MySQL 写一个包含所有执行时间超过long_query_time秒的SQL 语的日志文件。show processlist:慢查询日志在查询结束以后才记录,所以在应用反映执行效率出现问题的时候查询慢查询日志并不能定位问题,可以使用showprocesslist 命令查看当前 MySQL 在进行的线程,包括线程的状态、是否锁表等,可以实时地查看SQL的执行情况,同时对一些锁表操作进行优化。

5、explain 分析执行计划

6、常用优化策略

避免对数据进行重复检索增加cache层负载均读写分离开启查询缓存内存优化

7、内存优化原则

将尽量多的内存分配给 MySQL 做缓存,但要给操作系统和其他程序预留足够内存

MyISAM存储引擎的数据文件读取依赖于操作系统自身的IO缓存,因此,如果有MyISAM表,就要预留更多的内存给操作系统做IO缓存

排序区、连接区等缓存是分配给每个数据库会话(session)专用的,其默认值的设置要根据最大连接数合理分配,如果设置太大,不但浪费资源,而且在并发连接较高时会导致物理内存耗尽。

8、InnoDB 内存优化

InnoDB用一块内存区做IO 缓存池,该缓存池不仅用来缓存InnoDB 的索引块,而且也用来缓存InnoDB的数据块。

innodb buffer_pool size该变量决定了InnoDB存储引擎表数据和索引数据的最大缓存区大小。在保证操作系统及其他程序有足够内存可用的情况下,innodb_buffer_poolsize 的值越大,缓存命中率越高,访问InnoDB 表需要的磁盘I/O就越少,性能也就越高

innodb buffer_pool size=512Minnodb log_buffer_size决定了InnoDB重做日志缓存的大小,对于可能产生大量更新记录的大事务,增加innodb_log_buffer_size 的大小,可以避免InnoDB 在事务提交前就执行不必要的日志写入磁盘操作。

innodblog_buffer_size=10M

9、并发参数调整

max connections采用max connections 控制允许连接到 MySQL数据库的最大数量,默认值是151。如果状态变量connection errors_max connections 不为零,并且一直增长,则说明不断有连接请求因数据库连接数已达到允许最大值而失败,这是可以考虑增大 max connections的值

MySOL 最大可支持的连接数,取决于很多因素,包括给定操作系统平台的线程库的质量、内存大小、每个连接的负荷、CPU的处理速度,期望的响应时间等,需要根据服务器性能进行评估设定。

back logback log 参数控制 MySQL 监听TCP 端口时设置的压请求栈大小。如果MySql的连接数达到max connections时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即 back_log,如果等待连接的数量超过 back log,将不被授予连接资源,将会报错

5.6.6版本之前默认值为 50,之后的版本默认为 50+(max connections /5),但最大不超过900。如果需要数据库在较短的时间内处理大量连接请求,可以考虑适当增大back log 的值。table open cache该参数用来控制所有 SOL 语执行线程可打开表缓存的数量,而在执行SQL语句时,每一个SQL执行线程至少要打开1个表缓存。该参数的值应该根据设置的最大连接数 max connections 以及每个连接执行关联查询中涉及的表的最大数量来设定:max connectionsxN;

thread cache size为了加快连接数据库的速度,MySQL 会缓存一定数量的客户服务线程以备重用,通过参数thread cache size 可控制 MySOL缓存客户服务线程的数量。

innodb lock wait timeout该参数是用来设置InnoDB 事务等待行锁的时间,默认值是50ms,可以根据需要进行动态设置

标签: #数据库连接数量怎么算 #数据库连接数量怎么算的