![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MySQL
文章平均质量分 86
Mysql存储引擎
星光之子0317
这个作者很懒,什么都没留下…
展开
-
MySQL备份与恢复(七)-复制
复制复制工作原理快照+复制的备份架构复制工作原理复制(replication)是MySQL数据库提供的一种高可用高性能的解决方案,一般用来建立大型的应用总体来说,replication的工作原理分为以下3个步骤:主服务器(master)把数据更改记录到二进制日志(binlog)中从服务器(slave)把主服务器的二进制日志复制到自己的中继日志(relay log)中从服务器重做中继日志中的日志,把更改应用到自己的数据库上,以达到数据的最终一致性。复制的工作原理并不复杂,其实就是一个完全备份原创 2021-11-03 01:30:55 · 117 阅读 · 0 评论 -
MySQL备份与恢复(六)-快照备份
快照备份MySQL数据库本身并不支持快照功能因此快照备份 是指 通过文件系统支持的快照功能 对数据库 进行备份备份的前提是 将所有数据库文件 放在同一文件分区中,然后对该分区进行快照操作支持快照功能的文件系统和设备包括FreeBSD的UFS文件系统,Solaris的ZFS文件系统,GNU/Linux的逻辑管理器(Logical Volume Manager,LVM)等LVM是LINUX系统下对磁盘分区进行管理的一种机制LVM在硬盘和分区之上建立一个逻辑层,来提高磁盘分区管理的灵活性管理员可以通原创 2021-11-03 01:44:59 · 1055 阅读 · 0 评论 -
MySQL备份与恢复(五)-热备
热备份ibbackupXtraBackupXtraBackup实现增量备份ibbackupibbackup是InnoDB存储引擎官方提供的热备工具,可以同时备份MyISAM存储引擎和InnoDB存储引擎表对于InnoDB存储引擎表其备份工作原理如下:记录备份开始时,InnoDB存储引擎重做日志文件检查点的LSN复制共享表空间文件以及独立表空间文件记录复制完表空间文件后,InnoDB存储引擎重做日志文件检查点的LSN复制在备份时产生的重做日志对于事务的数据库,如Microsoft SQL原创 2021-11-02 17:04:03 · 94 阅读 · 0 评论 -
MySQL备份与恢复(四)-二进制日志备份与恢复
二进制日志备份与恢复二进制日志非常关键,可以通过它完成point-in-time的恢复工作MySQL数据库的replication同样需要二进制日志在默认情况下并不启用二进制日志,要使用二进制日志首先必须启用它。如在配置文件中进行设置:[mysqld]log-bin=mysql-bin对于InnoDB存储引擎只简单启用二进制日志是不够的,还需要启用一些其他参数来保证最为安全和正确地记录二进制日志,因此对于InnoDB存储引擎,推荐的二进制日志的服务器配置应该是:[mysqld]log-bi原创 2021-11-02 11:29:57 · 262 阅读 · 0 评论 -
MySQL备份与恢复(三)-逻辑备份
逻辑备份mysqldump及相关参数SELECT...INTO OUTFILE命令逻辑备份的恢复LOAD DATA INFIL命令mysqlimportmysqldump及相关参数mysqldump备份工具最初由Igor Romanenko编写完成,通常用来完成转存(dump)数据库的备份及不同数据库之间的移植如从MySQL低版本数据库升级到MySQL高版本数据库,又或者从MySQL数据库移植到Oracle、Microsoft SQL Server数据库等。mysqldump的语法如下:mysql原创 2021-11-02 11:26:12 · 170 阅读 · 0 评论 -
MySQL备份与恢复(二)-冷备
冷备对于InnoDB存储引擎的冷备非常简单,只需要备份 MySQL数据库的 frm文件,共享表空间文件,独立表空间文件(*.ibd),重做日志文件另外建议 定期备份 MySQL数据库的配置文件my.cnf,这样有利于恢复的操作通常DBA会写一个脚本来进行冷备的操作,DBA可能还会对备份完的数据库进行打包和压缩,这都并不是难事关键在于不要遗漏原本需要备份的物理文件,如共享表空间和重做日志文件,少了这些文件可能数据库都无法启动另外一种经常发生的情况是由于磁盘空间已满而导致的备份失败,DBA可能习惯性地原创 2021-11-01 22:42:53 · 243 阅读 · 0 评论 -
MySQL备份与恢复(一)-备份分类
备份分类概述(备份分类)概述(备份分类)可以根据不同的类型来划分备份的方法。根据备份的方法不同可以将备份分为:Hot Backup(热备)Cold Backup(冷备)Warm Backup(温备)Hot Backup 是指 数据库运行中 直接备份,对 正在运行的数据库操作 没有任何的影响这种方式在MySQL官方手册中称为Online Backup(在线备份)Cold Backup 是指 备份操作 是在 数据库停止的情况下,这种备份最为简单,一般只需要复制相关的数据库物理文件即可这种方原创 2021-11-01 22:42:36 · 123 阅读 · 0 评论 -
MySQL事务(六)-MVCC(多版本并发控制)、Read View
MVCC概述当前读快照读MVCC原理解决幻读概述Multi-Version Concurrency Control-多版本并发控制用来在数据库中控制并发的方法,实现对数据库的并发访问用的在MySQL中,MVCC只在读取已提交(Read Committed)和可重复读(Repeatable Read)两个事务级别下有效其是通过 Undo日志中的版本链 和 ReadView一致性视图 来实现的MVCC 就是 在多个事务同时存在 时,SELECT语句 找寻到 具体是 版本链上的哪个版本,然后 再找到的原创 2021-09-21 00:28:23 · 447 阅读 · 0 评论 -
MySQL事务(五)-分布式事务
分布式事务概述XA事务组成分布式事务提交阅读参考概述InnoDB存储引擎提供了对XA事务的支持,并通过 XA事务 来支持 分布式事务的实现分布式事务 指的是 允许多个独立的事务资源(transactional resources)参与到 一个全局的事务中事务资源通常是关系型数据库系统,但也可以是其他类型的资源全局事务要求 在其中的 所有参与的事务 要么都提交,要么都回滚,这对于事务原有的ACID要求又有了提高另外,在使用分布式事务时,InnoDB存储引擎的事务隔离级别必须设置为SERIALIZA原创 2021-09-13 17:30:36 · 218 阅读 · 0 评论 -
MySQL事务(四)-事务隔离级别、脏读、可重复读、不可重复读、幻读
事务隔离级别、事务控制语句、隐式提交事务控制语句隐式提交的SQL语句事务统计(待完善)事务隔离级别事务控制语句在MySQL命令行的默认设置下,事务都是自动提交(auto commit)的,即执行SQL语句后就会马上执行COMMIT操作因此要显式地开启一个事务需使用命令BEGIN、START TRANSACTION,或者执行命令SET AUTOCOMMIT=0,禁用当前会话的自动提交START TRANSACTION | BEGIN:显式地开启一个事务COMMIT:要想使用这个语句的最简形式,只需原创 2021-09-02 14:55:00 · 396 阅读 · 0 评论 -
MySQL事务(三)-事务的实现(undo log-回滚日志)
undo log-回滚日志基本概念undo存储管理undo log格式insert undo logupdate undo logundo log阅读参考purge线程基本概念redo log记录了事务的行为,可以很好地通过其对页进行“redo”操作但是事务有时还需要进行回滚操作,这时就需要undo(回滚) log因此在对数据库进行修改时,InnoDB存储引擎不但会产生redo,还会产生一定量的undo这样如果执行的事务或语句由于某种原因失败了,又或者用一条ROLLBACK语句请求回滚,就可以利用原创 2021-09-23 17:16:21 · 916 阅读 · 0 评论 -
MySQL事务(二)-事务的实现(redo log-重做日志)
事务的实现概述redo-重做日志log block-重做日志块log group-重做日志组重做日志格式LSN-日志序列号恢复undoundo存储管理undo log格式查看undo信息purge概述事务隔离性 由 锁 来实现原子性、一致性、持久性通过数据库的redo log和undo log来完成redo log称为重做日志,用来保证事务的原子性和持久性undo log用来保证事务的一致性redo和undo的作用都可以视为是一种恢复操作redo 恢复 提交事务 修改的 页操作undo 回滚原创 2021-09-01 17:19:30 · 338 阅读 · 0 评论 -
MySQL事务(一)-ACID、扁平事务、带有保存点的扁平事务、链事务、嵌套事务、分布式事务
事务概述概述A(Atomicity)-原子性C(consistency)-一致性I(isolation)-隔离性D(durability)-持久性事务分类扁平事务带有保存点的扁平事务链事务嵌套事务分布式事务总结概述事务(Transaction)是数据库区别于文件系统的重要特性之一在文件系统中,如果正在写文件,但是操作系统突然崩溃了,这个文件就很有可能被破坏。当然,有一些机制可以把文件恢复到某个时间点。不过,如果需要保证两个文件同步,这些文件系统可能就显得无能为力了。例如,在需要更新两个文件时,更新完一原创 2021-08-30 22:37:52 · 400 阅读 · 0 评论 -
MySQL-性能调优
性能调优选择合适的CPU内存的重要性硬盘对数据库性能的影响传统机械硬盘固态硬盘合理地设置RAIDRAID类型RAID Write Back功能RAID配置工具操作系统的选择不同的文件系统对数据库性能的影响选择合适的基准测试工具sysbenchmysql-tpcc将从以下几个方面集中讲解InnoDB存储引擎的性能问题:选择合适的CPU内存的重要性硬盘对数据库性能的影响合理地设置RAID操作系统的选择也很重要不同文件系统对数据库的影响选择合适的基准测试工具选择合适的CPU当前数据库的应用原创 2021-08-30 16:57:39 · 195 阅读 · 0 评论 -
MySQL锁(三)-锁的算法、锁问题、阻塞、死锁
锁的算法原创 2021-08-18 23:50:17 · 315 阅读 · 0 评论 -
MySQL锁(二)-InnoDB存储引擎中的锁、共享锁、排他锁、意向锁
InnoDB存储引擎中的锁锁的类型锁的兼容情况意向锁锁的类型InnoDB存储引擎实现了如下两种标准的行级锁共享锁(S Lock),允许事务读一行数据排他锁(X Lock),允许事务删除或更新一行数据锁的兼容情况如果一个事务T1 已经获得了 行r 的 共享锁,那么 另外的事务T2 可以 立即获得 行r的共享锁,因为 读取 并没有改变 行r的数据,称这种情况为 锁兼容(Lock Compatible)但 若有其他的事务T3 想获得 行r的排他锁,则其 必须等待 事务T1、T2释放行r上的共享锁原创 2021-08-18 17:18:57 · 336 阅读 · 0 评论 -
MySQL锁(一)-锁的概念、lock和latch
锁的概念、lock和latch锁的概念lock和latch锁的概念锁 是 数据库系统 区别于 文件系统的一个关键特性锁机制 用于 管理 对共享资源 的 并发访问InnoDB存储引擎 会在 行级别上 对 表数据上锁,另外同时也会在 数据库内部其他多个地方 使用锁,从而允许 对多种不同资源 提供并发访问。例如,操作缓冲池中的LRU列表,删除、添加、移动LRU列表中的元素为了保证一致性,必须有锁的介入。数据库系统 使用锁 是为了支持 对共享资源进行并发访问,提供 数据的 完整性和一致性对于MyISAM原创 2021-08-18 15:25:34 · 768 阅读 · 0 评论 -
MySQL-InnoDB存储引擎索引、B+树索引、哈希算法、全文检索
InnoDB存储引擎索引概述B+树插入删除B+树索引聚集索引辅助索引B+树索引的分裂B+树索引的管理索引管理Fast Index CreationOnline Schema Change(待完善)Online DDLCardinalityInnoDB存储引擎的Cardinality统计概述InnoDB存储引擎 支持 以下几种常见的索引:B+树索引全文索引哈希索引InnoDB存储引擎支持的哈希索引是自适应的,InnoDB存储引擎会根据表的使用情况自动为表生成哈希索引,不能人为干预是否在一张表中原创 2021-09-07 00:54:55 · 1200 阅读 · 0 评论 -
MySQL表(五)-分区表(RANGE分区、LIST分区、HASH分区、KEY分区、COLUMNS分区、子分区)
分区表分区概述分区概述分区功能 并不是 在存储引擎层 完成的,因此不是只有InnoDB存储引擎支持分区,常见的存储引擎MyISAM、NDB等都支持。但也并不是所有的存储引擎都支持,如CSV、FEDORATED、MERGE等就不支持MySQL数据库在5.1版本时添加了对分区的支持分区的过程 是将 一个表或索引 分解为 多个更小、更可管理的部分就访问数据库的应用而言,从逻辑上讲,只有一个表或一个索引,但是在物理上 这个表或索引 可能由 数十个物理分区组成。每个分区都是独立的对象,可以独自处理,也可以作原创 2021-08-14 12:57:21 · 1611 阅读 · 0 评论 -
MySQL表(四)-约束、视图
约束、视图数据完整性约束的创建和查找约束和索引的区别对错误数据的约束ENUM和SET约束外键约束视图视图的作用物化视图(待完善)数据完整性数据完整性有以下三种形式:实体完整性:保证 表中有一个主键,在InnoDB存储引擎表中,可以通过定义Primary Key或Unique Key约束来保证实体的完整性。还可以通过编写一个触发器来保证数据完整性域完整性:保证 数据 每列的值 满足特定的条件。在InnoDB存储引擎表中,域完整性可以通过以下几种途径来保证:选择合适的数据类型确保一个数据值满足特定原创 2021-08-12 23:32:41 · 393 阅读 · 0 评论 -
MySQL表(三)-InnoDB 数据页 结构
InnoDB 数据页 结构介绍File HeaderPage HeaderInfimum和Supremum RecordUser Record和Free SpacePage DirectoryFile Trailer介绍页 是 InnoDB存储引擎 管理 数据库的 最小磁盘单位页类型 为 B-tree Node的页 存放的 即是 表中行的实际数据InnoDB数据页由以下7个部分组成:File Header(文件头)Page Header(页头)Infimun和Supremum Records原创 2021-08-12 22:44:56 · 224 阅读 · 0 评论 -
MySQL表(二)-InnoDB 行 记录格式
InnoDB 行 记录格式InnoDB 行 记录格式Compact行记录格式Redundant行记录格式行 溢出数据Compressed和Dynamic行记录格式CHAR的行结构存储InnoDB 行 记录格式在InnoDB 1.0.x版本之前,InnoDB存储引擎提供了Compact和Redundant两种格式 来存放 行记录数据,这也是目前使用最多的一种格式Redundant格式是为兼容之前版本而保留的在MySQL 5.1版本中,默认设置为Compact行格式可以通过命令SHOW TABLE S原创 2021-08-12 22:05:28 · 262 阅读 · 0 评论 -
MySQL表(一)-索引组织表、 InnoDB逻辑存储结构
索引组织表、 InnoDB逻辑存储结构索引组织表InnoDB逻辑存储结构表空间段-segment区-extent页-Page行-Row索引组织表在InnoDB存储引擎中,表 都是 根据 主键顺序 组织存放的,这种 存储方式 的 表 称为 索引组织表(index organized table)在InnoDB存储引擎表中,每张表都有个主键(Primary Key),如果在创建表时没有显式地定义主键,则InnoDB存储引擎会按如下方式选择或创建主键:首先判断 表中 是否有 非空的唯一索引(Unique原创 2021-08-10 22:35:04 · 260 阅读 · 0 评论 -
MySQL文件(三)-InnoDB存储引擎文件、重做日志(redo log)文件等
套接字文件、pid文件、表结构定义文件、InnoDB存储引擎文件套接字文件pid文件表结构定义文件InnoDB存储引擎文件表空间文件重做日志文件innodb_log_file_sizeinnodb_log_files_in_group、innodb_mirrored_log_groupsinnodb_log_group_home_dir小结重做日志类型写入重做日志套接字文件在UNIX系统下本地连接MySQL可以采用UNIX域套接字方式,这种方式需要一个套接字(socket)文件套接字文件可由参数soc原创 2021-08-09 22:37:00 · 221 阅读 · 0 评论 -
MySQL文件(二)-日志文件(二进制日志binlog、慢查询日志等)
日志文件日志文件类型错误日志二进制日志max_binlog_sizebinlog_cache_sizesync_binlogbinlog-do-db、binlog-ignore-dblog-slave-updatebinlog_format(重要)慢查询日志long_query_timelog_queries_not_using_indexeslog_throttle_queries_not_using_indexesslow_log表log_outputlong_query_io、slow_query_t原创 2021-08-08 17:56:43 · 694 阅读 · 0 评论 -
MySQL文件(一)-参数文件
参数文件参数文件参数参数类型参数文件当MySQL实例启动时,数据库会先去读一个配置参数文件,用来寻找 数据库的各种文件 所在位置 以及 指定 某些初始化参数,这些参数 通常 定义了 某种内存结构有多大等在默认情况下,MySQL实例会按照一定的顺序在指定的位置进行读取,用户只需通过命令mysql --help|grep my.cnf来寻找即可注意:参数文件并不是InnoDB特有的文件MySQL数据库参数文件的作用和Oracle数据库的参数文件极其类似,不同的是,Oracle实例在启动时若找不到参数文原创 2021-08-08 15:24:43 · 160 阅读 · 0 评论 -
MySQL-文件类型介绍
文件类型介绍参数文件:告诉MySQL实例启动时在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还会介绍各种参数的类型日志文件:用来记录 MySQL实例 对某种条件 做出响应时 写入的文件,如错误日志文件、二进制日志文件、慢查询日志文件、查询日志文件等socket文件:当用UNIX域套接字方式进行连接时需要的文件pid文件:MySQL实例的进程ID文件MySQL表结构文件:用来存放 MySQL表结构定义 的 文件存储引擎文件:因为MySQL表存储引擎的关原创 2021-08-08 14:40:27 · 348 阅读 · 0 评论 -
MySQL-InnoDB存储引擎(三)-插入缓冲、double write、自适应哈希索引、异步IO、刷新邻接页
InnoDB关键特性插入缓冲Insert BufferChannel BufferInsert Buffer的内部实现Merge Insert Buffer两次写自适应哈希索引异步IO刷新邻接页插入缓冲Insert Buffer不要误认为 插入缓冲 是 缓冲池中的一个组成部分虽然InnoDB缓冲池中 有 Insert Buffer信息,但是 Insert Buffer 和 数据页 一样,也是 物理页 的 一个组成部分在InnoDB存储引擎中,主键是行唯一的标识符,通常应用程序中行记录的插入顺序是按原创 2021-08-08 11:48:27 · 318 阅读 · 0 评论 -
MySQL-InnoDB存储引擎(二)-Master Thread
Master Thread工作方式InnoDB 1.0.x版本之前的Master ThreadloopInnoDB 1.2.x版本之前的Master Thread硬编码问题-innodb_io_capacityinnodb_max_dirty_pages_pct默认值问题innodb_adaptive_flushinginnodb_purge_batch_sizeInnoDB 1.2.x版本的Master Thread总结参数InnoDB 1.0.x版本之前的Master ThreadMaster Th原创 2021-08-07 14:29:33 · 199 阅读 · 0 评论 -
MySQL-InnoDB存储引擎(一)-后台线程、内存、缓冲池、Checkpoint
InnoDB存储引擎版本体系架构后台线程Master ThreadIO ThreadPurge(清理) ThreadPage Cleaner Thread内存缓冲池LRU List、Free List、Flush List重做日志 缓冲(名词)额外的内存池Checkpoint技术版本从MySQL 5.1版本时,MySQL数据库允许 存储引擎开发商 以 动态方式加载引擎在MySQL 5.1中,可以支持两个版本的InnoDB,一个是静态编译的InnoDB版本,可将其视为老版本的InnoDB;另一个是动态加原创 2021-08-05 22:45:12 · 280 阅读 · 0 评论 -
MySQL-存储引擎介绍
MySQL存储引擎介绍InnoDB存储引擎MyISAM存储引擎NDB存储引擎Memory存储引擎Archive存储引擎Federated存储引擎Maria存储引擎InnoDB存储引擎InnoDB存储引擎 支持 事务,其 设计目标 主要面向 在线事务处理(OLTP)的应用特点是行锁设计、支持外键,并支持类似于Oracle的非锁定读,即默认读取操作不会产生锁从MySQL数据库5.5.8版本开始,InnoDB存储引擎是默认的存储引擎InnoDB存储引擎 将数据 放在一个逻辑的表空间中,这个表空间就像黑原创 2021-07-26 18:31:56 · 81 阅读 · 0 评论