MySQL学习笔记(2):配置和状态「终于解决」

MySQL学习笔记(2):配置和状态「终于解决」本文更新于2020-05-30,使用MySQL 5.7,操作系统为Deepin 15.4。 配置文件 Windows下配置文件的读取顺序: %WINDIR%/my.ini C:/my.cnf INST

MySQL学习笔记(2):配置和状态

本文更新于2020-05-30,使用MySQL 5.7,操作系统为Deepin 15.4。

配置文件

Windows下配置文件的读取顺序:

  1. %WINDIR%/my.ini
  2. C:/my.cnf
  3. INSTALL_DIR/my.ini,INSTALL_DIR为实际的安装目录
  4. –defaults-extra-file=xxx指定的文件

Linux下配置文件的读取顺序:

  1. /etc/my.cnf
  2. INSTALL_DIR/my.cnf,INSTALL_DIR为实际的安装目录
  3. –defaults-extra-file=xxx指定的文件
  4. ~/.my.cnf

配置文件内容分为多个组:

  • [mysql]:配置mysql客户端工具。如default-character-set可配置默认客户端、连接、返回结果字符集。
  • [mysqld]:配置mysqld服务器。
  • [mysqldump]:配置mysqldump工具。

系统变量

关于系统变量的详情参阅官方文档:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html

关于InnoDB系统变量的详情参阅官方文档:https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html

MySQL服务器可使用以下方式配置,各种方式的参数名相似:

  • 系统变量:可使用SHOW VARIABLES [LIKE "name"]SELECT @@name查看,使用SET [GLOBAL|SESSION] [@@]name = value设置。参数名使用“_”分隔单词。
  • 命令行参数:即mysqld的命令行参数。参数名加上“–”前缀,使用“-”分隔单词。可通过mysqld --help --verbose可查看命令行参数的使用及从当前配置读取的系统变量值。
  • 配置文件:配置文件的[mysqld]组,参数名使用“-”或“_”分隔单词。

参数值如为布尔类型,设置为0、OFF为假,1、ON为真。命令行参数和配置文件,不指定值时表示真。

系统变量 命令行参数 配置文件 说明
autocommit 是否自动提交事务
back_log TCP监听端口新连接的等待队列大小
–binlog-do-db= 只有指定的库才记录二进制日志,可指定多次
binlog_format –binlog-format= 二进制日志格式,,可为STATEMENT、ROW、MIXED
–binlog-ignore-db= 只有指定的库才不记录二进制日志,可指定多次
bulk_insert_buffer_size 每个线程MyISAM批量插入的缓存区大小
character_set_client 客户端字符集
character_set_connection 连接字符集,字符串常量的字符集也由此指定
character_set_database 默认库的字符集
character_set_results 返回给客户端的结果字符集
character_set_server 服务器字符集
collation_database 默认库的字符集校对规则
collation_server 服务器字符集校对规则
concurrent_insert MyISAM表并发插入规则。NEVER或0不允许并发插入;AUTO或1当MyISAM表没有空洞时,允许一个线程读表的同时另一个线程从表尾插入;ALWAYS或2无论表有无空洞,都允许在表尾并发插入
datadir 数据目录。默认为/var/lib/mysql/
end_markers_in_json 设置trace分析优化器以JSON格式输出
event_scheduler 是否打开事件调度器
expire_logs_days –expire-logs-days= 二进制日志过期天数
foreign_key_checks 是否进行外键检查
–general-log 是否启用查询日志
–general-log-file= 查询日志文件名,默认为“主机名.log”,默认保存在datadir指定的目录中
have_query_cache 服务器在安装时是否已经配置高速缓存
init_file 服务器启动后执行的SQL文件
innodb_buffer_pool_instances InnoDB缓存池实例数,每个实例平分缓存池的大小
innodb_buffer_pool_size InnoDB表数据和索引数据的最大缓存池大小
innodb_data_file_path InnoDB共享表空间文件,格式为file_name:file_size[:autoextend[:max:max_file_size]],可以“;”分隔
innodb_data_home_dir InnoDB共享表空间目录
innodb_doublewrite InnoDB是否开启双写策略
innodb_file_per_table InnoDB是否使用多表空间的存储方式
innodb_flush_log_at_trx_commit InnoDB事务提交时刷新日志的规则。0在事务提交时,不会立即将缓存中的redo日志写到磁盘文件,而是每秒触发一次,并调用操作系统fsync刷新IO缓存,若数据库崩溃,数据就会丢失;1在事务提交时,立即将缓存中的redo日志回写到磁盘文件,并调用操作系统fsync刷新IO缓存;2在事务提交时,立即将缓存中的redo日志回写到磁盘文件,但并不马上调用fsync刷新IO缓存,而是每秒触发一次,若数据库崩溃,只要操作系统没有崩溃,数据就不会丢失
innodb_io_capacity InnoDB后台任务每秒的IO次数,包括刷新缓存池脏页等
innodb_lock_wait_timeout InnoDB事务等待行锁的超时时间
innodb_locks_unsafe_for_binlog InnoDB是否在执行INSERT INTO ... SELECT ...CREATE TABLE ... SELECT ...时对源表记录加锁,如否则可能无法使用binlog正确恢复或复制数据
innodb_log_buffer_size InnoDB日志缓存池大小
innodb_log_file_size InnoDB日志文件大小
innodb_lru_scan_depth InnoDB缓存池无可用数据页时扫描LRU list尾部数据页的个数。其后进行相关磁盘刷新操作,淘汰的页放入free list中
innodb_max_dirty_pages_pct InnoDB缓存池中脏页的最大比例
innodb_old_blocks_pct InnoDB缓存池LRU list中old sublist的比例
innodb_old_blocks_time InnoDB缓存池LRU list中数据块从old sublist转移到new sublist的毫秒数
innodb_table_locks InnoDB能否感知MySQL Server加的表级锁,同时MySQL Server能否感知InnoDB加的行级锁。能感知才能自动识别涉及表级锁的死锁
join_buffer_size 每个线程的表连接缓存区大小
key_cache_age_threshold MyISAM索引缓存块由hot子表向warm子表降级的时间。对于有N个块的索引缓存来说,如果一个在hot子表头部的索引块在最后N*key_cache_age_threshold/100次缓存命中未被访问过,就会被降级到warm子表
key_cache_block_size MyISAM索引缓存块大小
key_cache_division_limit MyISAM索引缓存用做warm子表的比例。默认值为100,亦即不启用中点插入策略
key_buffer_size MyISAM索引缓存区的大小。可使用

.key_buffer_size使用多索引缓存机制
–local-infile 是否允许LOAD DATA LOCAL INFILE从客户端本地读取文件
log_bin –log-bin[=] 是否开启二进制日志。命令行参数可指定文件名,,默认为“主机名-bin”,默认保存在datadir指定的目录中
log_bin_basename 二进制日志文件名(不带目录,实际文件名会追加形如.000001的编号)
log_bin_index 二进制日志文件的索引文件
log_error –log-error[=] 错误日志文件名,默认为“主机名.err”,默认保存在datadir指定的目录中
–log-output= 查询日志和慢查询日志的保存方式。NONE不保存,其优先级最高;TABLE保存至表,查询日志保存至mysql库general_log表,慢查询日志保存至msql库slow_log表;FILE保存至文件,为默认值。可使用“,”分隔
–log-queries-not-using-indexes 是否将不使用索引的查询写入慢查询日志
–log-slave-updates 从库是否写二进制日志。如果从库同时也作为主库,则需打开这个选项,还需指定–log-bin
–log-slow-admin-statements 是否将执行慢的管理语句写入慢查询日志
long_query_time 执行时间(不计入获得锁的时间)超过该值的查询将写入慢查询日志
low_priority_updates 是否使MyISAM存储引擎的写请求比读请求优先级更低
lower_case_table_names 表名大小写规则。0磁盘存储的表名区分大小写,比较也区分大小写,Linux的默认值;1磁盘存储的表名为小写,比较不区分大小写,Windows的默认值;2磁盘存储的表名区分大小写,比较不区分大小写,Mac的默认值
–master-connect-retry= 从库在与主库的连接丢失时重试的时间间隔
max_connections MySQL数据库的最大连接数
max_heap_table_size Memory存储引擎最大的表大小
max_length_for_sort_data 对filesort,如查询到的字段总大小小于该值,则使用一次扫描算法,否则使用两次扫描算法
max_write_lock_count 表级锁获取写锁的最大次数,此后会允许获取一次读锁
min_examined_row_limit 扫描记录数不少于该值的查询将写入慢查询日志
open_files_limit 打开的文件描述符最大数量
optimizer_trace 优化器trace设置
optimizer_trace_max_size 化器trace使用的最大内存大小
profiling 是否打开profiling
query_cahce_size 查询缓存大小
query_cache_type 查询缓存使用规则。0或OFF关闭查询缓存;1或ON打开查询缓存(使用SQL_NO_CACHE除外);2或DEMAND只缓存使用SQL_CACHE的查询
read_buffer_size MyISAM表顺序读取的缓存大小,为每个线程独占
–read-only 从库是否只接受root的更新操作
read_rnd_buffer_size MyISAM表随机读取的缓存大小,为每个线程独占
–replicate-do-db= 从库复制的库
–replicate-do-table= 从库复制的表
–replicate-ignore-db= 从库忽略复制的库
–replicate-ignore-table= 从库忽略复制的表
–replicate-wild-go-table= 以通配符方式指定从库复制的表
–replicate-wild-ignore-table= 以通配符方式指定从库忽略复制的表
–safe-user-create 是否不能用GRANT创建新用户,除非用户有mysql库user表的INSERT权限
–skip-grant-tables 是否令服务器跳过权限系统的使用
–skip-networking 是否不允许TCP/IP连接,而必须使用命名管道、共享内存、UNIX套接字
–skip-show-database 是否有SHOW DATABASES权限的用户才能执行且显示所有库名;否则所有用户都能执行,但只显示有权限的库名
–slave-skip-errors= 复制过程中从库可以自动跳过的错误号
slow_query_log –slow-query-log 是否启用慢查询日志
slow_query_log_file –slow-query-log-file[=] 慢查询日志文件名,默认为“主机名-slow.log”,默认保存在datadir指定的目录中
sort_buffer_size 内存排序缓存区大小,为每个线程独占
sql_log_bin 是否写入二进制日志。具有SUPER权限可禁止将自己的语句写入二进制日志
sql_log_off 是否关闭查询日志,只针对当前连接
sql_mode SQL Mode
–ssl 是否支持SSL连接。如支持SSL,还需指定–ssl-ca、–ssl-cert、–ssl-key
sync_binlog –sync-binlog= 二进制日志缓存刷新规则。0由文件系统控制二进制日志缓存的刷新,大于0表示每若干条二进制日志刷新文件系统缓存
table_open_cache 打开并缓存的所有表数量
thread_cache_size 缓存可重用的线程数量
tx_isolation 事务隔离级别
unique_checks 是否开启唯一性检查

状态变量

关于状态变量的概要参阅官方文档:https://dev.mysql.com/doc/refman/5.7/en/server-status-variable-reference.html

关于状态变量的详情参阅官方文档:https://dev.mysql.com/doc/refman/5.7/en/server-status-variables.html

状态变量 说明
Com_commit 事务提交的次数
Com_delete 执行DELETE的次数,不论提交还是回滚都会累加
Com_insert 执行INSERT的次数,不论提交还是回滚都会累加,对批量插入的操作只累加一
Com_rollback 事务回滚的次数
Com_select 执行SELECT的次数,不论提交还是回滚都会累加
Com_update 执行UPDATE的次数,不论提交还是回滚都会累加
Connection_errors_max_connections 因为超过数据库最大连接数而被拒绝的连接数
Connections 连接服务器的历史总次数
Handler_read_key 使用索引读取的行数,越高表示索引越经常使用
Handler_read_rnd_next 在数据文件读下一行的次数,越高表示进行越多表扫描
Innodb_buffer_pool_read_requests 从InnoDB缓存池读取的次数
Innodb_buffer_pool_reads 从磁盘读取到InnoDB缓存池的次数
Innodb_buffer_pool_wait_free Innodb的IO线程从数据文件中读取了数据要写入缓存池的时候,需要等待空闲页的次数
InnoDB_row_lock_time_avg InnoDB行锁平均等待时间
InnoDB_row_lock_waits InnoDB航所等待次数
Innodb_rows_deleted InnoDB执行DELETE删除的行数
Innodb_rows_inserted InnoDB执行INSERT插入的行数
Innodb_rows_read InnoDB执行SELECT返回的行数
Innodb_rows_updated InnoDB执行UPDATE更新的行数
Key_blocks_unused MyISAM未使用的索引缓存块数
Key_read_requests 从MyISAM索引缓存区读取的次数
Key_reads 从磁盘读取至MyISAM索引缓存区的次数
Key_write_requests 写入至MyISAM索引缓存区的次数
Key_writes 从MyISAM索引缓存区写入至磁盘的次数
Open_tables 打开并缓存的表数量
Qcache_free_blocks 查询缓存的空闲内存块数
Qcache_free_memory 查询缓存的空闲内存总数
Qcache_hits 查询缓存命中数
Qcache_inserts 被加入到查询缓存中的查询数目
Qcache_lowmem_prunes 因缺少内存而被从查询缓存中删除的查询数
Qcache_not_cached 没有被查询缓存缓存的查询数
Qcache_queries_in_cache 查询缓存中已注册的查询数目
Qcache_total_blocks 查询缓存的总内存块数
Slow_queries 慢查询次数
Sort_merge_passes 排序算法进行合并的次数
Table_locks_immediate 能够立即获得表级锁的次数
Table_locks_waited 不能立即获取表级锁而需要等待的次数,越高表示表级锁争用越严重
Threads_created 为连接创建的线程数量
Uptime 服务器工作时长

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7850.html

(0)
上一篇 2023-03-12
下一篇 2023-03-12

相关推荐

  • 使用Python实现字符串分割功能

    使用Python实现字符串分割功能Python中内置的字符串处理函数split,可以非常方便地实现字符串分割。split函数会按照指定的分隔符对字符串进行分割,并返回一个列表。

    2024-01-03
    105
  • 使用Notepad++编写Python程序

    使用Notepad++编写Python程序Python是一种易于学习的编程语言,目前在各个领域都得到了广泛的应用。与其他语言相比,Python语言更加简洁、可读性更好,因此越来越受欢迎。而Notepad++是一款流行的文本编辑器,它不仅支持Python语法高亮显示,还提供了很多编程辅助工具,可用于编写Python程序。本文将介绍如何使用Notepad++编写Python程序。

    2024-07-26
    38
  • MySQL查询性能优化七种武器之链路追踪「建议收藏」

    MySQL查询性能优化七种武器之链路追踪「建议收藏」MySQL优化器可以生成Explain执行计划,我们可以通过执行计划查看是否使用了索引,使用了哪种索引?
    但是到底为什么会使用这个索引,我们却无从得知。
    好在MySQL提供了一个好用的工具 — opt

    2023-05-31
    134
  • JuiceFS 在大搜车数据平台的实践[亲测有效]

    JuiceFS 在大搜车数据平台的实践[亲测有效]大搜车已经搭建起比较完整的汽车产业互联网协同生态。在这一生态中,不仅涵盖了大搜车已经数字化的全国 90% 中大型二手车商、9000+ 家 4S 店和 70000+ 家新车二网,还包括大搜车旗下车易拍、

    2023-04-27
    151
  • mysql的CURRENT_TIMESTAMP【转】「建议收藏」

    mysql的CURRENT_TIMESTAMP【转】「建议收藏」在创建时间字段的时候 表示当插入数据的时候,该字段默认值为当前时间 表示每次更新这条数据的时候,该字段都会更新成当前时间 这两个操作是mysql数据库本身在维护,所以可以根据这个特性来生成【创建时间】

    2023-02-17
    176
  • Python读取字典:轻松处理和管理大量数据

    Python读取字典:轻松处理和管理大量数据Python字典是一种无序的键值对集合。一个字典用花括号 {} 表示,其中每个键值对用冒号 : 分隔,每个键和其对应值用逗号隔开。例如:

    2023-12-28
    113
  • 掌握Python Super用法

    掌握Python Super用法Python中的super函数是一个用于调用父类方法的关键字。它不仅可以看作是superhero(超级英雄)的缩写,更重要的是在面向对象(OOP)编程中起到了至关重要的作用。本文将从多个方面详细介绍Python Super的用法,帮助读者更好的掌握这个关键字。

    2024-06-30
    46
  • 为啥redis16个数据库_数据库外键怎么设置

    为啥redis16个数据库_数据库外键怎么设置注:本文原作者并没有解释‘为什么’,只是说是配置文件默认16. 所以我猜redis作者只是在告诉使用者,这个数请随意改。 导读:在实际项目中Redis常被应用于做缓存,分布式锁、消息队列等。但是在搭…

    2023-03-09
    158

发表回复

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