MySQL5.7: my.cnf参数速查小册子

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: MySQL5.7: my.cnf参数速查小册子

MySQL5.7: my.cnf参数速查小册子

MySQL配置文件

MySQL文档包含了描述各种配置文件

  • /etc/my.cnf 全局选项
  • /etc/mysql/my.cnf 全局选项
  • SYSCONFDIR/my.cnf 全局选项
  • $MYSQL_HOME/my.cnf 服务器特定选项(仅限服务器)
  • defaults-extra-file 用 --defaults-extra-file 指定的文件,如果有的话
  • ~/.my.cnf 用户特定的选项
  • ~/.mylogin.cnf 用户特定的登录路径选项(仅限客户端)

但它没有提到mysql.cnf, 下文我们将会为大家解释

MySQL配置文件加载顺序

root@a609a3ac9400:/# which mysqld

/usr/sbin/mysqld

root@a609a3ac9400:/# /usr/sbin/mysqld --verbose --help | grep -A 5 'Default options'

Default options are read from the following files in the given order:

/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

/etc/my.cnf 、/etc/mysql/my.cnf 、~/.my.cnf 是 MySQL 的默认配置文件,有先后的读取顺序

/etc/mysql/mysql.cnf是什么情况呢?

root@a609a3ac9400:~# ls -lrt /etc/alternatives/my.cnf

lrwxrwxrwx 1 root root 20 Sep 28 16:28 /etc/alternatives/my.cnf -> /etc/mysql/mysql.cnf

从上面信息可以看出,/etc/alternatives/my.cnf 其实是一个软连接,指向参数文件/etc/mysql/mysql.cnf

/etc/mysql/conf.d/ 和 /etc/mysql/mysql.conf.d/的作用

# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.

#

# This program is free software; you can redistribute it and/or modify

# it under the terms of the GNU General Public License, version 2.0,

# as published by the Free Software Foundation.

#

# This program is also distributed with certain software (including

# but not limited to OpenSSL) that is licensed under separate terms,

# as designated in a particular file or component or in included license

# documentation.  The authors of MySQL hereby grant you an additional

# permission to link the program and your derivative works with the

# separately licensed software that they have included with MySQL.

#

# This program is distributed in the hope that it will be useful,

# but WITHOUT ANY WARRANTY; without even the implied warranty of

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

# GNU General Public License, version 2.0, for more details.

#

# You should have received a copy of the GNU General Public License

# along with this program; if not, write to the Free Software

# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA


!includedir /etc/mysql/conf.d/

!includedir /etc/mysql/mysql.conf.d/

但是/etc/mysql/my.cnf参数文件下面没有任何参数设置,只看到下面两行设置,表示导入这两个目录里面的配置文件。

!includedir /etc/mysql/conf.d/

#表示包含/etc/mysql/conf.d/这个路径下面的配置文件

!includedir /etc/mysql/mysql.conf.d/

#表示包含/etc/mysql/mysql.conf.d/这个路径下面的配置文件

/etc/mysql/conf.d/ 目录下的 my.cnf 和 mysql.cnf、mysqld.cnf 区别仅仅在于后者专门用于服务端和客户端的配置,即[mysqld]节点和[mysql]节点

MySQL配置文件参数

[mysqld]
server-id=513306                        # Mysql唯一标识,一个集群中唯一;port=3306                               # 服务端口,默认3306user = mysql                            # 启动用户,建议用户mysqlbind_address=0.0.0.0                   # 绑定的IP地址,建议使用具体地址basedir=/mysql/app/mysql                # mysql安装路径,建议使用绝对路径datadir=/mysql/data/3306/data           # 数据目录socket=/mysql/data/3306/mysql.sock      # 指定套接字文件pid-file=/mysql/data/3306/mysql.pid     # 指定pid文件character-set-server=utf8               # 指定默认编码格式skip-character-set-client-handshake=1   # 跳过mysql程序起动时的字符参数设置 ,使用服务器端字符集设置 0:不跳过  1:跳过autocommit =0                          # 是否开启自动提交, 0:不开启 1:开启skip_name_resolve =1                   # 禁止域名解析   建议开启max_connections =800                   # 最大连接数max_connect_errors =1000               # 最大连接错误default-storage-engine=INNODB           # 设置默认引擎,常用引擎INNODB,MYISAN,建议使用INNODBtransaction_isolation = READ-COMMITTED  # 事务隔离级别,可选参数有:READ-UNCOMMITTED(读取未提交内容), READ-COMMITTED(读取提交内容), REPEATABLE-READ(可重读), SERIALIZABLE(可串行化).explicit_defaults_for_timestamp =1     # 参数是否初始化sort_buffer_size = 32M                  # 排序使用的缓存大小,MySQL5.7中,默认为1M(优化参数之一,一般情况下默认数值就够用了)join_buffer_size = 128M                 # join操作所用用的缓存大小tmp_table_size = 72M                    # 临时表大小max_allowed_packet = 16M                # 服务端最大允许接收的数据包大小sql_mode ="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"   # mysql支持的基本语法及校验规则interactive_timeout =1800              # 是MySQL在等待一个活动连接关闭连接前等待的秒数。默认28800秒,8小时wait_timeout =1800                     # 是MySQL在等待一个非活动连接关闭连接前等待的秒数。默认28800秒,8小时read_buffer_size = 16M                  # (数据文件存储顺序)是MySQL读入缓冲区的大小,将对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL会为它分配一段内存缓冲区,read_buffer_size变量控制这一缓冲区的大小,如果对表的顺序扫描非常频繁,并你认为频繁扫描进行的太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能,read_buffer_size变量控制这一提高表的顺序扫描的效率 数据文件顺序。read_rnd_buffer_size = 32M              # 是MySQL的随机读缓冲区大小,当按任意顺序读取行时(列如按照排序顺序)将分配一个随机读取缓冲区,进行排序查询时,MySQL会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要大量数据可适当的调整该值,但MySQL会为每个客户连接分配该缓冲区所以尽量适当设置该值,以免内存开销过大。表的随机的顺序缓冲 提高读取的效率。#event_scheduler =1             # 事件调度器  1:开启   0:不开启query_cache_type =1                    # 控制着查询缓存工能的开启的关闭。0时表示关闭,1时表示打开,2表示只要select 中明确指定SQL_CACHE才缓存。query_cache_size=1M                     # 查询缓存大小, 一般 1M很够用了table_open_cache=2048                   # 文件描述符的缓存大小,4G内存的机器,建议设置为2048,thread_cache_size=768                   # 线程池缓存大小,当客户端断开连接后 将当前线程缓存起来 当在接到新的连接请求时快速响应 无需创建新的线程myisam_max_sort_file_size=10G           #  mysql重建索引时允许使用的临时文件最大大小myisam_sort_buffer_size=64M             # MyISAM表发生变化时重新排序所需的缓冲。一般64M足矣。key_buffer_size=32M                     #  Key Buffer大小,用于缓存MyISAM表的索引块。决定数据库索引处理的速度(尤其是索引读),对于内存在4GB左右的服务器该参数可设置为256M或384M。注意:该参数值设置的过大反而会是服务器整体效率降低!read_buffer_size=8M                     # 用于对MyISAM表全表扫描时使用的缓冲区大小。针对每个线程进行分配(前提是进行了全表扫描)。进行排序查询时,MySql会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该值。但MySql会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大。read_rnd_buffer_size=4M                 # 是MySQL的随机读缓冲区大小,当按任意顺序读取行时(列如按照排序顺序)将分配一个随机读取缓冲区,进行排序查询时,MySQL会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要大量数据可适当的调整该值,但MySQL会为每个客户连接分配该缓冲区所以尽量适当设置该值,以免内存开销过大。表的随机的顺序缓冲 提高读取的效率。back_log=1024                           # 值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。由默认的50,每个连接256kb#flush_time=0open_files_limit=65536                  # MySQL打开了多少个文件描述符,默认最小1024table_definition_cache=1400             # 表定义文件缓存相比表文件描述符缓存所消耗的内存更小,其默认值是400#binlog_row_event_max_size=8K# 有时候为了避免master.info和中继日志崩溃,在容忍额外的fsync()带来的开销,推荐设置#sync_master_info=10000                 # 默认为10000,每间隔多少事务刷新master.info,如果是table(innodb)设置无效,每个事务都会更新,建议 设置为1#sync_relay_log=10000                   # 默认为10000,即每10000次sync_relay_log事件会刷新到磁盘。为0则表示不刷新,交由OS的cache控制,建议设置为1#sync_relay_log_info=10000              # 默认为10000,每间隔多少事务刷新relay-log.info,建议设置为1########log settings########log-output=FILE                         # 日志存储方式,TABLE、FILE,建议设置为FILE,默认为FILEgeneral_log =0                         # 所有到达MySQL Server的SQL语句记录下来。通用日志,不建议开启,这个很消耗磁盘空间,用于优化及故障排查general_log_file=/mysql/log/3306/itpuxdb-general.err    # 指定通用日志文件slow_query_log = ON                     # ON 为开启慢查询日志,off表示关闭慢查询日志,用于优化SQL语句slow_query_log_file=/mysql/log/3306/itpuxdb-query.err   #指定慢查询日志文件long_query_time=10                      # 指定多少秒返回查询的结果为慢查询log-error=/mysql/log/3306/itpuxdb-error.err     # 指定错误日志log_queries_not_using_indexes =1       # 开启 记录没有使用索引查询语句,1或者ON开启,记录至慢日志中log_slow_admin_statements =1           #记录那些慢的optimize table,analyze table和alter table语句,1或者ON开启,记录至慢日志中log_slow_slave_statements =1           # 记录由Slave所产生的慢查询log_throttle_queries_not_using_indexes =10     # 设定每分钟记录到日志的未使用索引的语句数目,超过这个数目后只记录语句数量和花费的总时间 expire_logs_days =90                   # 保留多少天min_examined_row_limit =100            # 对于查询扫描行数小于此参数的SQL,将不会记录到慢查询日志中#log_bin = "/log/bin_log/binlog"        # bin 日志路径设置########replication settings########    # 主从复制设置#master_info_repository = TABLE         # 值如果为FILE,建议将其修改为TABLE#relay_log_info_repository = TABLE#log_bin = bin.log  #sync_binlog = 1               # 默认,sync_binlog=0,表示MySQL不控制binlog的刷新,如果sync_binlog>0,表示每sync_binlog次事务提交,# sync_binlog=1了,表示每次事务提交,MySQL都会把binlog刷下去,是最安全但是性能损耗最大的设置。sync_binlog=1,多个事务同时提交,同样很大的影响MySQL和IO性能。# MySQL DBA设置的sync_binlog并不是最安全的1,而是100或者是0。这样牺牲一定的一致性,可以获得更高的并发和性能。#gtid_mode = on                         # 是否开启开启 基于 gtid 的复制, 5.7之后才出现的新特性#enforce_gtid_consistency = 1           # #log_slave_updates#binlog_format = row #relay_log = relay.log#relay_log_recovery = 1#binlog_gtid_simple_recovery = 1#slave_skip_errors = ddl_exist_errors########innodb settings######### 根据您的服务器IOPS能力适当调整,只有当你在频繁写操作的时候才有意义# 一般配普通SSD盘的话,可以调整到 10000 - 20000# 配置高端PCIe SSD卡的话,则可以调整的更高,比如 50000 - 80000 innodb_io_capacity =4000               # 动态调整刷新脏页的数量,一般设置最大值的1/2innodb_io_capacity_max =8000           #动态调整刷新脏页的最大数量innodb_buffer_pool_size = 200M          # 缓存池大小,默认128M,建议设置为总内存大小的,设置为物理内存的80%innodb_buffer_pool_instances =8        # 可以开启多个内存缓冲池,把需要缓冲的数据hash到不同的缓冲池中,这样可以并行的内存读写。innodb_buffer_pool_load_at_startup =1  # 默认为关闭OFF。如果开启该参数,启动MySQL服务时,MySQL将本地热数据加载到InnoDB缓冲池中。innodb_buffer_pool_dump_at_shutdown =1# 默认启用。指定在MySQL服务器关闭时是否记录在InnoDB缓冲池中缓存的页面,以便在下次重新启动时缩短预热过程。innodb_lru_scan_depth =2000            # LRU列表中可用页的数量,默认值为1024。innodb_lock_wait_timeout =5            # 事务锁超时时间 #innodb_flush_method = O_DIRECTinnodb_log_file_size = 200M             # mysql事务日志文件(ib_logfile0)的大小;innodb_log_files_in_group =2           # 指定你有几个日志组。一般2-3个日值组。默认为两个。innodb_log_buffer_size = 16M            # 事务在内存中的缓冲大小。innodb_undo_logs =128                  # InnoDB使用的回滚段个数,必须设置35个以上;,默认128innodb_undo_tablespaces =3             # 是控制undo是否开启独立的表空间的参数,为0表示:undo使用系统表空间,即ibdata1,不为0表示:使用独立的表空间,一般名称为 undo001 undo002,存放地址的配置项为:innodb_undo_directory,默认配置为0,参数必须大于或等于2,即回收(收缩)一个undo log日志文件时,要保证另一个undo log是可用的。innodb_undo_log_truncate =1            # 参数设置为1,即开启在线回收(收缩)undo log日志文件,支持动态设置。innodb_max_undo_log_size = 2G           # 每一个undo日志文件大小,默认1Ginnodb_flush_neighbors =1              # 刷脏页的控制策略,参数就是用来控制这个行为的,值为 1 的时候会有上述的“连坐”机制,值为 0 时表示不找邻居,自己刷自己的。建议设置为0innodb_purge_threads =4                # 负责回收已经使用并分配的undo页,可以指定多个innodb_purge_threads来进一步加快和提高undo回收速度。innodb_large_prefix =1                 # 单索引限制,是否开启允许列索引最大达到3072,不开启只有767innodb_thread_concurrency =64          # 来限制并发线程的数量innodb_print_all_deadlocks =1          # 是否开启保存死锁日志,死锁日志存放到error_log配置的文件里面innodb_strict_mode =1                  # InnoDB严格检查模式,尤其采用了页数据压缩功能后,最好是开启该功能。开启此功能后,当创建表(CREATE TABLE)、更改表(ALTER TABLE)和创建索引(CREATE INDEX)语句时,如果写法有错误,不会有警告信息,而是直接抛出错误,这样就可直接将问题扼杀在摇篮innodb_sort_buffer_size = 64M
innodb_flush_log_at_trx_commit=1        # sync_binlog 两个参数是控制MySQL 磁盘写入策略以及数据安全性的关键参数,当两个参数都设置为1的时候写入性能最差,但安全性最高,# 设置为0,log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行.该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。# 设置为1,每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去.# 设置为2,每次事务提交时MySQL都会把log buffer的数据写入log file.但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。innodb_autoextend_increment=64          # 默认 8M ,单位为M,配置表空间自动扩展,每次扩展多大Minnodb_concurrency_tickets=5000         # 这个参数设置为一种tickets,默认是5000,innodb_old_blocks_time=1000             # 页读取到mid位置后,需要等待多久才会被加入到LRU列表的热端。默认1000msinnodb_open_files=65536                 # 限制Innodb能打开的表的数据。innodb_stats_on_metadata=0              # 是否自动更新统计信息,默认为0关闭,innodb_file_per_table=1                 # MySQL InnoDB引擎 默认会将所有的数据库InnoDB引擎的表数据存储在一个共享空间中:ibdata1,当增删数据库的时候,ibdata1文件不会自动收缩,单个数据库的备份也将成为问题。通常只能将数据使用mysqldump 导出,然后再导入解决这个问题。如果启用了innodb_file_per_talbe参数,需要注意的是每张表的表空间内存放的只是数据、索引和插入缓冲Bitmap页,其他数据如:回滚信息、插入缓冲索引页、系统事物信息、二次写缓冲(Double write buffer)等还是放在原来的共享表空间内。同时说明了一个问题:即使启用了innodb_file_per_table参数共享表空间还是会不断的增加其大小的。#innodb_checksum_algorithm=0            # 是否开启checksum算法innodb_data_file_path=ibdata1:200M;ibdata2:200M;ibdata3:200M:autoextend:max:5G      #可配置表空间相关参数。innodb_temp_data_file_path = ibtmp1:200M:autoextend:max:20G         # 可配置临时表空间相关参数。innodb_buffer_pool_dump_pct =40        # 指定每个缓冲池最近使用的页面读取和转储的百分比,1-100,默认25innodb_page_cleaners =4                # 多个页面清理线程刷脏页,用于指定页面清理线程的数量。其默认值1,维持了之前单个页面清理线程的配置innodb_purge_rseg_truncate_frequency =128      # 指定purge操作被唤起多少次之后才释放rollback segments。当undo表空间里面的rollback segments被释放时,undo表空间才会被truncate。由此可见,该参数越小,undo表空间被尝试truncate的频率越高。binlog_gtid_simple_recovery=1           #这个变量用于在MySQL重启或启动的时候寻找GTIDs过程中,控制binlog 如何遍历的算法?#2. 当binlog_gtid_simple_recovery=FALSE 时:#    为了初始化 gtid_executed,算法是: 从newest_binlog -> oldest_binlog 方向遍历读取,如果发现有Previous_gtids_log_event , 那么就停止遍历#    为了初始化 gtid_purged,算法是:   从oldest_binlog -> newest_binlog 方向遍历读取, 如果发现有Previous_gtids_log_event(not empty)或者 #至少有一个Gtid_log_event的文件,那么就停止遍历#3. 当binlog_gtid_simple_recovery=TRUE 时:#    为了初始化 gtid_executed , 算法是: 只需要读取newest_binlog#    为了初始化 gtid_purged, 算法是: 只需要读取oldest_binlog#4. 当设置binlog_gtid_simple_recovery=TRUE , 如果MySQL版本低于5.7.7 , 可能会有gitd计算出错的可能,具体参考官方文档详细描述log_timestamps=system                   # 主要是控制 error log、slow_log、genera log,等等记录日志的显示时间参数,但不会影响 general log 和 slow log 写到表 (mysql.general_log, mysql.slow_log) 中的显示时间#transaction_write_set_extraction=MURMUR32      # 基于WRITESET的并行复制方式show_compatibility_56=on                # mysql兼容性是否兼容mysql5.6,这是是开启兼容lower_case_table_names=1        # 是否区分大小写 说明 0:区分大小写,1:不区分大小写read_only=1                     # 普通是否可读, 0:关闭可读, 1:开启可读super_read_only=1               # 管理员(super)用户是否可读,超级可读 ,0:关闭可读, 1:开启可读

参考链接:

http://dev.mysql.com/doc/mysql/en/server-system-variables.html

https://dev.mysql.com/doc/refman/5.7/en/option-files.html

https://dev.mysql.com/doc/refman/5.7/en/program-variables.html

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
2月前
|
关系型数据库 MySQL 数据库
【赵渝强老师】MySQL的参数文件
MySQL启动时会读取配置文件my.cnf来确定数据库文件位置及初始化参数。该文件分为Server和Client两部分,包含动态与静态参数。动态参数可在运行中通过命令修改,而静态参数需修改my.cnf并重启服务生效。文中还提供了相关代码示例和视频教程。
|
2月前
|
缓存 监控 关系型数据库
如何根据监控结果调整 MySQL 数据库的参数以提高性能?
【10月更文挑战第28天】根据MySQL数据库的监控结果来调整参数以提高性能,需要综合考虑多个方面的因素
92 1
|
4月前
|
存储 SQL 关系型数据库
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
MySQL调优主要分为三个步骤:监控报警、排查慢SQL、MySQL调优。 排查慢SQL:开启慢查询日志 、找出最慢的几条SQL、分析查询计划 。 MySQL调优: 基础优化:缓存优化、硬件优化、参数优化、定期清理垃圾、使用合适的存储引擎、读写分离、分库分表; 表设计优化:数据类型优化、冷热数据分表等。 索引优化:考虑索引失效的11个场景、遵循索引设计原则、连接查询优化、排序优化、深分页查询优化、覆盖索引、索引下推、用普通索引等。 SQL优化。
684 15
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
|
3月前
|
SQL 关系型数据库 MySQL
数据库:MYSQL参数max_allowed_packet 介绍
数据库:MYSQL参数max_allowed_packet 介绍
329 2
|
5月前
|
安全 关系型数据库 MySQL
MySQL非root安装-初始化数据库时unknown variable ‘defaults-file=**/my.cnf‘
解决安装过程中出现的问题通常需要仔细地检查错误日志、配置文件和执行命令,保证各项配置设置的精确无误是顺利完成安装的关键。通过上述的步骤分析和解决方案,非root用户安装MySQL时遇到"unknown variable 'defaults-file=**/my.cnf'"的问题应该可以得到妥善的解决。
462 0
|
6月前
|
分布式计算 关系型数据库 MySQL
MySQL超时参数优化与DataX高效数据同步实践
通过合理设置MySQL的超时参数,可以有效地提升数据库的稳定性和性能。而DataX作为一种高效的数据同步工具,可以帮助企业轻松实现不同数据源之间的数据迁移。无论是优化MySQL参数还是使用DataX进行数据同步,都需要根据具体的应用场景来进行细致的配置和测试,以达到最佳效果。
|
6月前
|
存储 缓存 关系型数据库
Mysql/etc/my.cnf参数详解
以上只是 `/etc/my.cnf`中的部分参数,实际上,`/etc/my.cnf`中的参数非常多,可以根据具体的应用需求进行调整。
151 0
|
11天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
39 3
|
11天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
41 3