可以用客户端连接后通过命令来查看:
show variables;
show variables like '%connection%';
参考地址:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html
一、通用(General)
- datadir=/var/data/mysql 数据文件存储目录
- socket=/var/lib/mysql/mysql.sock 服务器和客户端在同机会使用这个socket文件进行连接
- pid_file=/var/lib/mysql/mysql.pid mysql的进程ID
- default_storage_engine=InnoDB 默认存储引擎
- skip-grant-tables 如果忘记密码可以通过这个跳过验证,免密登录
二、编码(Character)
- character_set_client 客户端数据的编码集,可以动态连接指定
- character_set_connection 客户端连接传输信息的字符集,可以动态指定
- character_set_results 服务端返回客户端结果的字符集
- character_database 数据库默认字符集
- character_set_server mysql服务器的默认字符集
三、连接(Connection)
- max_connections=151 mysql的最大连接数
- max_user_connections=0 mysql指定单个用户的最大连接数,默认是0,表示不限制
- connect_timeout 连接超时时间
- back_log 表示连接数满了之后,新的请求有多少可以暂存在堆栈中,超出的部分则不再接受请求
- wait_timeout 关闭一个非交互连接需要等待的时间
- interactive_timeout 关闭一个交互连接需要等待的时间
四、日志(log)
- log_error 错误日志存储地址
- log_bin 二进制日志存储地址
- binlog_do_db 指定需要存储到二进制日志的数据库
- binlog_ignore_db 指定不需要存储到二进制日志的数据库
- sync_binlog 多少次写日志后同步磁盘
- general_log ON|OFF 是否开启查询日志
- general_log_file 查询日志的存储地址
- slow_query_log ON|OFF是否开启慢查询日志
- slow_query_log_file 慢查询日志的存储文件地址
- long_query_time 慢日志中需要的一个参考值,多少查询时间算是慢查询
------------恢复内容开始------------
可以用客户端连接后通过命令来查看:
show variables;
show variables like '%connection%';
参考地址:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html
一、通用(General)
- datadir=/var/data/mysql 数据文件存储目录
- socket=/var/lib/mysql/mysql.sock 服务器和客户端在同机会使用这个socket文件进行连接
- pid_file=/var/lib/mysql/mysql.pid mysql的进程ID
- default_storage_engine=InnoDB 默认存储引擎
- skip-grant-tables 如果忘记密码可以通过这个跳过验证,免密登录
二、编码(Character)
- character_set_client 客户端数据的编码集,可以动态连接指定
- character_set_connection 客户端连接传输信息的字符集,可以动态指定
- character_set_results 服务端返回客户端结果的字符集
- character_database 数据库默认字符集
- character_set_server mysql服务器的默认字符集
三、连接(Connection)
- max_connections=151 mysql的最大连接数
- max_user_connections=0 mysql指定单个用户的最大连接数,默认是0,表示不限制
- connect_timeout 连接超时时间
- back_log 表示连接数满了之后,新的请求有多少可以暂存在堆栈中,超出的部分则不再接受请求
- wait_timeout 关闭一个非交互连接需要等待的时间
- interactive_timeout 关闭一个交互连接需要等待的时间
四、日志(log)
- log_error 错误日志存储地址
- log_bin 二进制日志存储地址,避免数据丢失(恢复)
- binlog_do_db 指定需要存储到二进制日志的数据库
- binlog_ignore_db 指定不需要存储到二进制日志的数据库
- sync_binlog 多少次写日志后同步磁盘
- general_log ON|OFF 是否开启查询日志
- general_log_file 查询日志的存储地址
- slow_query_log ON|OFF是否开启慢查询日志
- slow_query_log_file 慢查询日志的存储文件地址
- long_query_time 慢日志中需要的一个参考值,多少查询时间算是慢查询
- log_slow_admin_statements
五、缓存(cache)
- key_buffer_size 索引缓存区的大小,只对MyIsAM生效
- query cache 8之后废弃
-
- query_cache_size 查询缓存的大小
- show status like '%Qcache%';
- Qcache_free_blocks:缓存中相邻内存块的个数,数值比较大表示内存碎片比较多
- Qcache_free_memory:查询缓存中剩余的内存大小
- Qcache_hits:命中缓存的次数(总统计)
- Qcache_inserts:没命中多少次(没命中会导致插入)
- Qcache_lowmem_prunes:多少条内存因为内存不足而被清除
- Qcache_not_cached:没有被cache的只读查询数量
- Qcache_queries_in_cache:当前缓存的query数量
- Qcache_total_blocks:当前cache中block的数量
- query_cache_limit 超出此大小的数据将不被缓存
- query_cache_min_res_unit 缓存块最小大小
- query_cache_type
- 0 or OFF :不缓存,query_cache_size最好对应设置为0
- 1 or ON:除了SELECT SQL_NO_CACHE外,其他都缓存
- 2 or DEMAND:仅缓存SELECT SQL_CACHE
- query_cache_size 查询缓存的大小
- sort_buffer_size 每个需要排序的线程分配该大小的缓冲区
- max_allowed_packet=32M 限制server接受的数据包大小
- join_buffer_size=2M 表示关联缓存的大小
- thread_cahce_size
- (show status) Threads_cached 代表当前此时此刻线程缓存有多少空闲线程
- (show status) Threads_connected
- (show status) Threads_created
- (show status) Threads_running
六、InnoDB
日志机制
- redo log: 一致性、持久性。 先写入日志,再提交;相当于两阶段提交,或者二次持久化(先持久化到日志【磁盘】,再持久化到数据库【磁盘】。也就是说日志持久化作为数据库持久化的担保)。
- undo log:原子性支持。相当于命令回滚,会对应事务的一个反向操作,比如delete一条记录,undo log就会对应生成一条insert记录。在事务回滚的时候执行undo log,来回滚操作。
- innodb_buffer_pool_size 指定大小的内存来缓冲数据和索引,最大可以设置物理内存的80%
- innodb_flush_log_trx_commit 主要控制innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,值分别为0 1 2(dml commit->log buffer->oss buffer->file system;一种直接读入oss buffer并触发异步同步 应该是1,一种是直接读入oss buffer,并每秒触发fsync,应该是0;还有一种是读取log buffer,并每秒读入oss buffer并触发fsync,应该是2)
- innodb_thread_concurrency 设置innodb的线程并发数,默认为0表示不受限制,如果要设置建议跟服务器的cpu核心数一致或者是cpu核心数的两倍
- innodb_log_buffer_size 此参数确定日志文件所用的内存大小,以M为单位
- innodb_log_file_size 此参数确定日志文件的大小,以M为单位
- innodb_log_files_in_group 以循环方式(redo log)将日志写入到多个文件
- read_buffer_size mysql读入缓冲区大小,对表进行顺序扫描的请求将分配到一个读入缓冲区
- read_rnd_buffer_size mysql随机读的缓冲区大小
- innodb_file_per_table 此参数确定为每张表分配一个新的文件,不配置的话,一个表只有一个文件(表结构文件,数据文件统一存储)
注1 binlog:通用的操作日志,可用于数据恢复,保存的是原始的操作内容,与存储引擎无关。
注2 ACID:
- 原子性(atomic):MVCC(多版本高并发控制) -undo机制
- 一致性(Consistency):redo log一致性,二次提交
- 隔离性(Isolation):锁机制
- 持久性(Durability):redo log最终也是要从内存(日志)->硬盘(日志)->内存(数据)->硬盘(数据)
注3 DEMAND:需求