# 深入了解 MySQL 数据库
MySQL 是一个开源的关系型数据库管理系统(RDBMS),以其高效、可靠而著称。它广泛应用于各种开发项目中,从小型应用到大型企业系统。本文将通过实际的代码示例,为大家深入探讨 MySQL 数据库的特性以及如何高效使用它。
## 1. MySQL 数据库基础
在讨论 MySQL 之前,首先我们需要了解数据库的基本概念。数据库是一个有组织的信息集合,能够有效存
如何实现MySQL设置`innodb_flush_log_at_trx_commit`?
# 1. 简介
在MySQL中,`innodb_flush_log_at_trx_commit`参数控制了InnoDB存储引擎的日志刷新策略。默认情况下,该参数的值为1,表示事务提交时,InnoDB会将事务日志同步写入磁盘,确保事务的持久性和安全。但是,这种同步写入的方式会对性能产生一些影响。
当我们需要
原创
2024-01-13 05:10:28
128阅读
MySQL引擎innodb与其他存储引擎的对比与分析
在当今大数据时代的背景下,关系型数据库已经成为数据存储和管理的重要工具。而在众多的数据库存储引擎中,MySQL的InnoDB以其优秀的事务支持、外键和高并发处理能力著称。本文将详细解析InnoDB引擎的技术特性、实战对比以及选型指导,帮助读者更有效地使用MySQL数据库。
### 背景定位
**适用场景分析**
InnoDB最适合于那些
1.逻辑存储结构下图是InnoDB的逻辑存储结构2.架构MySQL5.5版本开始,默认使用InnoDB存储引擎,它擅长事务处理,具有崩溃恢复特性,在日常开发中使用广泛。下图是InnoDB架构图,左侧为内存结构,右侧为磁盘结构。2.1、内存结构①Buffer pool:在执行增删改查操作时,先操作缓冲池中的数据,(缓冲池没有数据,再去磁盘加载并缓存在缓冲池中),然后再以一定的频率刷新到磁盘中,减少磁
转载
2023-08-08 17:57:12
112阅读
InnerDB实现原理 它是MySQL 从5.5 版本卡死的默认的存储引擎, 是第一份支持ACID特性的MySQL存储引擎, 特点是行锁设计, 支持MVCC(多版本并发控制), 支持外键, 提供一致性非锁定读, 同时尽可能高效的利用计算机硬件资源. MVCC MVCC( Multiversion Concurrency Control), 即多版本并发控制技术,
转载
2023-07-21 12:02:19
41阅读
本文是自己的阅读《Mysql技术内幕——InnoDB存储引擎》的笔记,主要是为了将阅读和实践结合起来,途中会穿插自己的理解及自己工作中的实践。 文章目录1. InnoDB存储引擎概述2. InnoDB体系结构2.3.1 后台线程2.3.2 内存1. 缓冲池(buffer pool)2. LRU list、Free List和Flush list3. 重做日志缓冲池(redo log buffe
在Mysql数据库的运维过程中,调优内存相关参数以提升性能是常见但复杂的任务,尤其是在使用InnoDB存储引擎时。本文将深入探讨Mysql innerdb参数调优的各个方面,以便通过系统化的方法来优化数据库性能。
### 背景定位
随着业务的快速发展,Mysql数据库的使用量不断增加,性能问题逐渐显露。在某个特定的时间节点,我们发现数据库的响应速度明显下降,特别是在高并发请求下。为了更好地理解
那么我们先来思考个问题,一条sql语句是如何来执行的,举例:update t_user set name="张三" where id=1,我们的系统通过一个数据库连接发送到了MySQL上,然后肯定会经过SQL接口、解析器、优化器、执行器,然后数据库去寻找id=1的数据,找到之后将磁盘上的数据文件里的数据进行修改,这是一个正常的逻辑,那么问题来了所有CURD都去磁盘上操作,这个性能是极差的,为了优化
转载
2024-02-10 20:40:12
47阅读
只是做了简单的总结和简述,很多地方并没有那么详尽,参考书本《MySQL是怎么运行的:从根上理解MySQL》 InnDB是怎么存储数据的InnDB页的记录结构COMPACT行格式其他行格式InnDB的数据页结构File HeaderPage HeaderFree Space(User Records Infimum+ supremum)Page DirectoryFile TrailerB+树 索引
转载
2023-12-14 18:36:33
84阅读
常见的关系型数据库有 Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access 和 MySQL 等。 非关系型数据库又被称为 NoSQL(Not Only SQL ),意为不仅仅是 SQL。 常见的非关系型数据库有 Neo4j、MongoDB、Redis、Memcached、MemcacheDB 和 HBase 等。 不同的程序设计语言
转载
2024-07-22 14:24:12
46阅读
# Java 规则引擎 Aviator 简介
在现代软件开发中,规则引擎用于动态地管理复杂的业务逻辑。它们可以在运行时执行业务规则,帮助我们更灵活地应对变化的需求。Aviator 是一个强大的 Java 规则引擎,它通过简单的脚本语言使得规则的定义和管理变得高效且灵活。本文将介绍 Aviator 的基本概念、使用方法,并提供相关示例。
## Aviator 的特性
Aviator 具有以下几
许久没有更新博客,上周末放假把网易大牛姜sir的著作MYSQL技术内幕InnoDB存储引擎又翻阅了一番,对当前工作的InnoDB特性有了一些新的认识,下面谈谈自己的读后感.1. InnoDB的体系架构由一系列后台线程,内存池和文件组成,这点与其他DB有相似之处. 在内存中划分了一块区域,即缓冲池,用来临时存放用户读写的数据页. InnoDB上对缓冲池读写数据页,刷新到磁盘等操作也使用了CHECKP
转载
2023-10-12 15:04:12
76阅读
## 了解MySQL中的InnoDB Buffer Page Flush
在MySQL数据库中,InnoDB是一种常用的存储引擎,提供了高性能和可靠性。其中,InnoDB Buffer是一种内存缓冲池,用于存储数据页,并且在数据修改后会将数据页刷新到磁盘上的数据文件中。本文将介绍InnoDB Buffer Page Flush的概念,并通过代码示例来说明其工作原理。
### 什么是InnoDB
原创
2024-02-20 05:50:32
31阅读
MySQL 事务隔离事务就是保证一组数据库操作,要么全部成功,要么全部失败。在MySQL中事务是在引擎层实现的。一、事务特性:ACID:原子性、一致性、隔离性、持久性原子性:事务中全部操作,要么全部完成,要么全部失败;一致性:几个并行事务,执行结果必须与按某一顺序串执行结果相一致;隔离性:事务的执行不受其他事务干扰,事务执行的中间结果对其他事务是透明的;持久性:任意提交的事务,系统必须保证该事务对
转载
2023-07-13 14:35:53
142阅读
1、两者在文件构成上有区别; 2、InnoDB支持事务处理,MyISAM不支持; 3、对无WHERE子句的COUNT(*)操作的不同:MyISAM中保存了该值,直接读取,InnoDB需要作全表扫描; 4、锁的区别:InnoDB支持表级锁和行级锁,MyISAM只支持表级锁;5、INNODB的索引会缓存数据,而MYISAM不会 6、INNODB不区分char和varchar 7、INNODB支持has
转载
2023-09-21 09:39:10
98阅读
本文主要解说mysql的Innodb存储引擎和相关mvcc相关内容。下面的解说都是依据Innodb引擎。mysql的常用的存储引擎有Innodb和MyISAM两种,因为Innodb支持事务、行级锁、mvcc,因此5.7以后默认存储引擎为Innodb,至于两者更具体的细节,可以搜索,这里就不在说明。 mysql默认的事务隔离级别:可重复读,即:保证同一事务内,两次读取同一数据,保证数据是一致的,不会
转载
2023-11-24 03:38:55
39阅读
该文章基于 8.0.22 版本 mysql innodb 进行分析;理论上对于较新版本 mysql 都可适用。为什么需要事务隔离?当多个事务在并发运行的时候,可能出现以下问题:脏读:事务1 读取到了 事务2 还未提交的数据,如果此时 事务2 进行了回滚,那么 事务1 读取到的数据将会是脏数据;不可重复读:事务1 在过程中多次读取数据,同时 事务2 对数据进行了修改(包括新增,修改,删除)并进行了提
转载
2023-12-26 17:31:31
31阅读
3.1 MySQL存储引擎MyISAM与InnoDB如何选择 MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。 虽然MySQL里的存储引擎不只是MyISAM与InnoDB这两个,但常用的就是两个。
转载
2024-07-26 12:20:38
21阅读
# 查询某个数据库的存储引擎
作为一名经验丰富的开发者,我将向你介绍如何使用MySQL查询某个数据库的存储引擎。下面是整个过程的步骤:
## 步骤概述
| 步骤 | 描述 |
| ---- | ---- |
| 步骤1 | 连接到MySQL数据库服务器 |
| 步骤2 | 选择要查询的数据库 |
| 步骤3 | 执行查询存储引擎的SQL语句 |
| 步骤4 | 解析查询结果 |
接下来,我将
原创
2024-01-01 04:59:50
58阅读
哪些需要创建索引: 1.主键自动建立唯一索引 2.频繁作为查询条件的字段应该创建索引 3.查询中与其他表关联的字段,外键关系建立索引 4.频繁更新的字段不合适创建索引 5.where条件里用不到的字段不创建索引 6.在高并发的时候,倾向创建复合索引 7.查询中的排序字段,排序字段若通过索引去访问将大大提高排序速度 8.查询中统计或者分组字段哪些表不需要创建索引: 1.表记录太少 2.经常增删改的表
转载
2023-10-27 23:08:47
63阅读