骆驼整理说
这个作者很懒,什么都没留下…
展开
-
Mysql架构体系
mysql体系结构原创 2022-03-11 11:58:44 · 4184 阅读 · 0 评论 -
事物挂起(JTA)
开启一个事务,将当前事务信息存入A类。如果需要进行事务挂起,将A类中的当前事务信息赋值到B类,并创建一个新事务,将新事务信息赋值到A类。如果需要恢复原事务,将A类清空,将B类中的数据信息赋值到A类,此时原事务再次生效。在Spring框架中,事务挂起不是一个直接支持的传播行为,更多依赖于底层资源或特定API来实现这一功能。事务挂起是指在某个事务方法中暂时中断当前事务的执行,以便可以执行另一个不希望受当前事务影响的操作。当需要在不干扰当前事务的情况下执行一些操作或者需要切换到不同的事务上下文时使用。原创 2024-11-03 11:08:50 · 111 阅读 · 0 评论 -
数据库三大范式
Oracle三大范式是数据库设计中的规范化过程,旨在减少数据冗余、提高数据一致性和数据库性能。这三大范式包括第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。原创 2024-10-29 00:15:14 · 126 阅读 · 0 评论 -
Oracle有哪些版本
Oracle数据库自其诞生以来,已经发布了多个版本,每个版本都带来了新的特性和功能改进。原创 2024-10-29 00:10:12 · 2027 阅读 · 0 评论 -
MySQL有哪些版本
MySQL是一个功能强大、可靠性高、性能优秀的关系型数据库管理系统,其版本众多,每个版本都带来了新功能和性能优化。原创 2024-10-29 00:02:05 · 1276 阅读 · 0 评论 -
Spring事务的实现
Spring事务的实现分为编程式事务和声明式事务。原创 2024-06-29 09:21:15 · 116 阅读 · 0 评论 -
MySQL死锁
MySQL死锁是指在MySQL数据库中,两个或多个事务在执行过程中,因争夺锁资源而造成的相互等待的现象,若无外力干涉它们都将无法继续执行。原创 2024-06-24 09:58:45 · 228 阅读 · 0 评论 -
MySQL锁优化
锁的粒度:通过适当调整锁的粒度来减少锁竞争。较小的锁粒度可以降低锁冲突的概率,但也会增加锁管理的开销。调整并发控制参数:MySQL提供了一些并发控制的参数,如max_connections、innodb_lock_wait_timeout等,可以根据系统的性能和需求来适当调整这些参数,以提高并发性能和减少锁竞争。使用事务处理数据:将适当的操作放在事务中进行,通过减少事务的提交次数,可以减少锁冲突的发生。以上是一些常见的优化MySQL锁的方法,具体的优化策略需要根据具体的业务场景和需求进行选择和调整。原创 2024-06-24 09:46:42 · 108 阅读 · 0 评论 -
MySQL数据库锁的工作原理
如果一个语句需要修改数据,那么该语句会根据隔离级别来确定加锁的方式,可能是加共享锁再加排他锁(两阶段锁协议)或是直接加排他锁(Next-Key Locking)。MySQL锁的工作原理可以通过事务隔离级别和锁的类型来控制并发访问的方式,确保数据的一致性和完整性。但是需要合理设置锁的粒度、优化事务的执行顺序以及避免长时间的锁持有,以提高系统的性能和吞吐量。当一个事务获得排他锁时,其他事务无法获得任何类型的锁(包括共享锁和排他锁)。除了共享锁和排他锁外,数据库还支持其他类型的锁,如行级锁、表级锁等。原创 2024-06-24 09:42:30 · 108 阅读 · 0 评论 -
MySQL数据库锁的实现原理
MySQL数据库的锁实现原理主要涉及到如何确保在多用户并发访问数据库时,保证数据的完整性和一致性。原创 2024-06-24 09:24:05 · 288 阅读 · 0 评论 -
并发控制技术
若锁被授予,则申请锁的事务可以继续执行,若被拒绝,则申请锁的事务将进行等待,直到锁被其他事务释放。由于快照隔离导致事务看不到其他事务对数据项的更新,为了避免出现丢失更新问题,可以采用以下两种方案避免:先提交者获胜:对于执行该检查的事务T,判断是否有其他事务已经将更新写入数据库,是则T回滚否则T正常提交。系统会在每个事务开始时赋予其一个时间戳,这个时间戳可以是系统时间也可以是一个不断累加的计数器值,当事务回滚时会为其赋予一个新的时间戳,先开始的事务时间戳小于后开始事务的时间戳。因而这是一种乐观的并发策略。原创 2024-06-20 22:31:26 · 380 阅读 · 0 评论 -
MVCC多版本并发控制
如果被访问的版本的trx_id值大于ReadView中的max_trix_id,说明该版本对应的事务在生成ReadView后开启,因此当前版本对当前事务不可见;MVCC机制中,一条记录会对应一个版本链,判断当前版本链中哪个版本对当前事务可见时,需要遍历版本链,对版本链上的每一条undo日志(即记录的一个版本)按上面步骤判断版本的可见性,如果某一个版本对当前事务不可见,就顺着版本链找到上一个版本,如果到链表的尾部都不可见,说明当前记录对当前事务完全不可见,查询结果就不包含当前记录。原创 2024-06-20 22:11:47 · 273 阅读 · 0 评论 -
Spring事务传播机制
事物传播机制原创 2024-06-20 21:46:15 · 141 阅读 · 0 评论 -
并发 并行和串行
并发、并行和串行是描述计算机系统中任务执行方式的三个基本概念,它们在不同的场景和需求下发挥着各自的作用。原创 2024-06-19 08:55:51 · 251 阅读 · 0 评论 -
脏读 幻读和不可重复读
Session A开启一个事务,然后读取了SessionB未提交的数据进行修改,修改完后Session A提交,然后SessionB rollback了当前事务,就出现了Session A发现自己明明做了修改并提交成功,但实际上记录并没有更新,这就是脏写。事务A多次读取同一数据,事务B在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不一致。在同一个事务里以相同的条件进行两次查询,每次查询的数据行数不一样,在两次查询过程中有另外一个事务对数据做了插入操作,造成了幻读。原创 2024-06-19 08:50:17 · 198 阅读 · 0 评论 -
数据库范式
设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。数据库设计最重要的是看需求跟性能,需求>性能>表结构。第二范式(2NF):在第一范式的基础上,要求数据库表中的非主键列必须完全依赖于主键,而不是主键的一部分,每一列都依赖于主键,表中的每一个字段都依赖于主键。第三范式(3NF):在第二范式的基础上,每一列都直接依赖于主键,而不能通过其他列来间接的依赖主键,确保数据之间的依赖关系是最直接的,从而进一步消除传递依赖。原创 2024-06-18 00:08:24 · 107 阅读 · 0 评论 -
MySQL和Oracle区别
MySQL和Oracle在收费与开源性、数据库规模、SQL语法与编程灵活性、存储与管理特性、对象名称的大小写敏感性、运行程序与外部程序支持、性能与扩展性,以及备份与恢复等方面都存在显著的差异。Oracle的SQL语法与MySQL有所不同,并且Oracle的PL/SQL编程语言提供了更大的灵活性。在逻辑备份时,Oracle不锁定数据,并且能确保备份数据的一致性。Oracle数据库支持从数据库内部编写、编译和执行的多种编程语言,而MySQL则不支持在系统内执行其他语言,也不支持XML。运行程序与外部程序支持。原创 2024-06-09 11:33:38 · 458 阅读 · 0 评论 -
Oracle基本操作
幻读:事务 T1 读取一条带 WHERE 条件的语句,返回结果集,T2 插入一条新纪录,恰好也是 T1 的WHERE 条件,T1 再次查询,结果集中又看到 T2 的记录,新纪录就叫做幻读。丢失更新:两个事务同时存储, 一个存储 100 , 一个存储 200,最终可能至存储了 200 或者 100,那另一个的更新就没成功,即结果不为预想的 300。脏读:事务 T1 更新了一行数据,还没有提交所做的修改,T2 读取更新后的数据,T1回滚,T2 读取的数据无效,这种数据称为脏读数据。原创 2024-06-09 10:10:52 · 269 阅读 · 0 评论 -
Oracle函数有哪些
Oracle数据库提供了大量的内置函数,这些函数可以分为多个类别,每个类别都有特定的用途。以下是一些常见的Oracle函数及其简要描述。原创 2024-06-09 10:03:10 · 508 阅读 · 0 评论 -
MySQL的优点
MySQL数据库的最大有效表尺寸通常是由操作系统对文件大小的限制决定的,而不是由MySQL内部限制决定的。MySQL中提供了多种数据库存储引擎,各引擎各有所长,适用于不同的应用场合,用户可以选择最合适的引擎以得到最高性能,可以处理每天访问量超过数亿的高强度的搜索 Web 站点。MySQL为各种流行的程序设计语言提供支持,为它们提供了很多的API函数,包括PHP、ASP.NET、Java、Eiffel、Python、Ruby、Tcl、C、C++、Perl语言等。高速是MySQL的显著特性。原创 2024-03-12 15:21:31 · 1595 阅读 · 0 评论 -
MySQL服务层组件
在数据库里,长连接是指连接成功后,如果客户端持续有请求,则一直使用同一个连接,短连接是指每次执行完几次查询就断开连接,下次查询再重新建立一个。调用InnoDB引擎接口取这个表的第一行,判断ID值是不是10,如果不是则跳过,如果是则将这行存到结果集中,调用引擎接口取“下一行”,重复相同的判断逻辑,直到取到这个表的最后一行。执行器负责执行优化器生成的查询执行计划,它会开始执行查询,检索数据并将结果返回给客户端,执行器执行时会检查用户是否具有执行查询的权限,如果没有权限会返回一个没有权限的错误。原创 2024-03-12 15:15:12 · 285 阅读 · 0 评论 -
文件存储组件
File System: 文件系统,例如数据存储的文件、操作日志类(redolog undolog binlog errorlog querylog slowlog data index)、索引文件等存储。原创 2024-03-12 15:10:59 · 94 阅读 · 0 评论 -
Mysql存储引擎
MySQL存储引擎是MySQL数据库的核心组件,负责数据的存储、处理和保护。常用的MySQL存储引擎包括:InnoDB、MyISAM、BDB、MEMORY、MERG、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,InnoDB和BDB提供事务安全表,其他存储引擎是非事务安全表。每个MEMORY表对应一个磁盘文件,格式是.frm ,该文件中只存储表的结构,数据文件存储在内存中,有利于数据的快速处理,提高整个表的读写效率。原创 2024-03-12 14:37:25 · 228 阅读 · 0 评论 -
Mysql慢sql优化
慢查询,如果没有加索引的话,会导致全表扫描。在where的条件列,建立索引,尽量避免全表扫描。原创 2023-11-15 18:59:40 · 511 阅读 · 0 评论 -
Mysql查询今天到期、n天即将到期、还有n天过期相关sql
其实你已经很幸福了,吃饱穿暖,没病没灾,隔三岔五还能吃顿好的,偶尔还能睡到自然醒,肥嘟嘟的一身福气。人这一辈子,要是能够逃过天灾,躲过战乱,不遇歹人,不生大病,就已经是非常幸运了,要是还能家庭和谐,收人稳定,三五知己,那更是天大的福泽。原创 2023-11-06 21:00:40 · 2111 阅读 · 0 评论 -
Oracle数据库
Oracle Database原创 2022-05-31 08:51:28 · 1969 阅读 · 0 评论 -
TiDB数据库
TiDB分布式数据库原创 2022-07-17 22:23:00 · 2312 阅读 · 0 评论 -
数据库故障与故障恢复技术
数据库运行过程中可能会出现故障,这些故障包括事务故障和系统故障两大类:事务故障比如非法输入,系统出现死锁,导致事务无法继续执行。系统故障比如由于软件漏洞或硬件错误导致系统崩溃或中止。这些故障可能会对事务和数据库状态造成破坏,因而必须提供一种技术来对各种故障进行恢复,保证数据库一致性,事务的原子性以及持久性。数据库通常以日志的方式记录数据库的操作从而在故障时进行恢复,因而可以称之为日志恢复技术。原创 2023-03-14 13:51:38 · 378 阅读 · 0 评论 -
数据库存储过程(Stored Procedure)
存储过程是数据库中的一个重要对象,用户通过指定存储过程的名字并给出参数(可以有参数,也可以没有)来执行它。二是全局临时存储过程,以两个井字号(##)号开始,则该存储过程将成为一个存储在tempdb数据库中的全局临时存储过程,全局临时存储过程一旦创建,以后连接到服务器的任意用户都可以执行它,而且不需要特定的权限。事务有严格的一致性和原子性,使用的安全性高,存储过程则没有这些特性,在进行一些复杂的操作时,为了保证操作的准确性,可以在存储过程中调用事务,然后判断事务的执行结果是否成功来确保操作的准确性。原创 2023-03-14 13:51:58 · 480 阅读 · 0 评论 -
数据库连接池
数据库连接池是用来分配、管理和释放数据库连接的,它允许应用程序重复使用一个现有的数据库连接,不需要重新创建,释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏,提高数据库操作的性能。最小连接数数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,称为最小连接数,是连接池一直保持的连接数。最大连接数。原创 2022-05-12 13:05:16 · 3181 阅读 · 0 评论 -
数据库分库分表设计
设计高并发系统数据库层面的设计,有些系统可能光分库不分表,也可能是光分表不分库,视业务需求而定。例如有一个小公司运营一个系统,注册用户20万,每天活跃用户1万,每天单表数据量1000,然后高峰期每秒钟并发请求最多就10个。后来由于公司业务发展迅猛,过了几个月注册用户数达到了2000万 每天活跃用户数100万 每天单表数据量10万条,高峰期每秒最大请求达到1000,然后连续融资了两轮,进账几个亿估值达到几亿美金。每天单表数据量10万条数据,一个月就300万条数据。原创 2022-02-14 15:59:04 · 2391 阅读 · 0 评论 -
数据库主从架构读写分离设计
读写分离原创 2022-02-14 16:00:44 · 394 阅读 · 0 评论 -
Mysql数据库一次查询过程
磁盘IO的 查询的优化原创 2022-03-14 16:53:52 · 3104 阅读 · 0 评论 -
数据库调优
关联的表个数越多,编译的时间和开销也就越大,每次关联内存中都生成一个临时表,应该把连接表拆开成较小的几个执行,可读性更高,如果一定需要连接很多表才能得到数据,那么意味着这是个糟糕的设计了,阿里规范中,建议多表联查三张表以下,索引不宜太多,一般5个以内,索引并不是越多越好,虽其提高了查询的效率,但却会降低插入和更新的效率;复合索引也称为联合索引,当我们创建一个联合索引的时候,如(k1,k2,k3),相当于创建了(k1)、(k1,k2)和(k1,k2,k3)三个索引,这就是最左匹配原则。打满,导致越删越慢。原创 2023-02-09 15:18:27 · 488 阅读 · 0 评论 -
MySQL分页查询性能优化
select 列 from 表 limit [offset,] count;offset:表⽰偏移量,通俗点讲就是跳过多少⾏,offset可以省略,默认为0,表⽰跳过0⾏,范围:[0,+∞)。count:跳过offset⾏之后开始取数据,取count⾏记录;范围:[0,+∞)。limit中offset和count的值不能⽤表达式。//取前n⾏记录select 列 from 表 limit 0,n;//或者select 列 from 表 limit n;原创 2023-03-14 18:23:57 · 523 阅读 · 0 评论 -
MySQL InnoDB存储引擎原理与缓存组件参数优化
AHI有一个要求,对这个页的连续访问模式(查询条件)必须一样的。缓冲池简单来说就是一块内存区域,在数据库中进行读取页的操作时,先从磁盘读到的页存放在缓冲池中,下一次读取相同的页时,先判断该页是不是在缓冲池中,若在则该页在缓冲池中被命中,直接读取该页,否则就读取磁盘上的页然后再放到缓冲池中。缓冲池是通过LRU(Latest Recent Used,最近最少使用)算法来进行管理的,即最频繁使用的页在LRU列表的最前段,最少使用的页在LRU列表的尾端,当缓冲池不能存放新读取的页时,首先释放LRU列表尾端的页。原创 2022-03-11 11:13:15 · 1854 阅读 · 4 评论 -
Mysql数据库设计
数据库设计原创 2022-03-12 14:00:57 · 4120 阅读 · 0 评论 -
Mysql索引
普通索引 联合索引 哈希索引 B+Tree索引 全文检索原创 2022-03-12 11:31:18 · 1822 阅读 · 0 评论 -
MySQL锁
遇见已是上上签 岂敢追求到永远MyISAM使用表级锁,InnoDB采用更细粒度的行级别锁,提高了数据表的性能。InnoDB行级别的锁通过索引来实现,如果查询条件中有主键则锁定主键,如果有索引则先锁定对应索引然后再锁定对应的主键(可能造成死锁),如果没有索引则会锁定整个表。悲观锁:操作数据库时采用悲观的态度,认为别人会在此时并发访问数据库。原创 2022-03-12 13:25:57 · 2805 阅读 · 0 评论 -
数据库事务隔离级别
当多个事务同时访问同一数据时,比如写操作,应该让这些事务先后执行以此保证事务的隔离性,但又想同一时刻尽可能多地处理访问请求,所以数据库设立了不同的隔离级别,牺牲部分隔离性而获得性能上的提升。关于隔离级别,SQL标准制定了四种隔离级别,MySQL中对这四种隔离级别的支持可能跟其他数据库有差异。原创 2023-03-14 13:27:26 · 136 阅读 · 0 评论