数据库
文章平均质量分 88
FearlessVoyager
这个作者很懒,什么都没留下…
展开
-
MySQL 分库分表
在MySQL中,分库分表是一种常用的数据库优化策略,特别是在数据量巨大时,可以有效提高查询性能和系统的可扩展性。分库:将数据分散到多个数据库中,每个数据库可以放在不同的物理服务器上。分表:将一个大表拆分成多个小表,这些小表可以在同一个数据库中,也可以分布在不同的数据库中。原创 2024-10-29 14:40:20 · 1002 阅读 · 0 评论 -
Flyway 数据库版本管理
Flyway是一款开源的数据库迁移工具,可以管理和版本化数据库架构。通过Flyway,可以跟踪数据库的变化,并将这些变化作为版本控制的一部分。Flyway支持SQL和NoSQL数据库,并且可以与现有的开发流程无缝集成,如持续集成(CI)和持续部署(CD)。Spring Boot版本是2.5.12,MySQL用的是8.2。这个问题是由于开始用的Flyway 依赖是的8.5.13版本,后面换成的8.5.13版本解决问题。原创 2024-04-08 15:18:34 · 1693 阅读 · 0 评论 -
MyBatis-plus 分页查询
MyBatis-Plus的 IPage 分页插件主要是通过AOP(面向切面编程)技术来实现的,它可以在运行时动态地拦截方法调用,并在方法执行前后添加额外的行为。这种方式使得分页功能可以很容易地集成到现有的代码中,而不需要对现有查询逻辑做出大的改动。PageHelper分页插件的工作原理基于MyBatis的拦截器模式,通过拦截MyBatis的执行过程,动态地在查询语句前添加分页逻辑。原创 2024-03-20 11:18:48 · 16151 阅读 · 2 评论 -
MySQL事务MVCC详解
MVCC (MultiVersion Concurrency Control) 叫做多版本并发控制机制。主要是通过数据多版本来实现读-写分离,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读,从而提高数据库并发性能。MVCC只在已提交读(Read Committed)和可重复读(Repeatable Read)两个隔离级别下工作,其他两个隔离级别和MVCC是不兼容的。因为未提交读,总数读取最新的数据行,而不是读取符合当前事务版本的数据行。而串行化(Serializable)则会对读的所有数据多加锁。原创 2023-10-17 23:07:25 · 1142 阅读 · 0 评论 -
MySQL三大日志undolog、redolog、binlog
防止事务已经提交到Buffer Pool中的数据还没来的急刷到磁盘数据页服务崩溃而导致的数据丢失问题,因为事务的所有操作都记录到redo log日志文件中了,在重启mysql服务的时候,根据redo log进行重做,从而保证事务的持久性。)的形式进行命名,每个的Redo日志文件大小都是一样的,默认由两个文件组成。undo log 叫做回滚日志,它保证了事务的 ACID 特性中的原子性(Atomicity),是存储引擎层生成的日志,记录的是逻辑操作,不会去修改磁盘数据页的数据。原创 2023-10-11 22:34:36 · 896 阅读 · 0 评论 -
Mysql之explain详解
使用explain可以展示出sql语句的执行计划,再根据sql的执行计划去判断这条sql有哪些点可以进行优化,从而让sql的效率达到最大化。原创 2023-08-16 23:46:46 · 784 阅读 · 0 评论 -
MySQL死锁分析
1. 什么是死锁死锁是指多个事务分别持有对方需要的锁,并且都在相互等待对方释放自己需要的锁,从而形成多个事务一直等待下去的状态。#mermaid-svg-rHwHdiCho6I0wz0E .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-rHwHdiCho6I0wz0E .label text{fill:#33原创 2021-05-26 23:31:31 · 156 阅读 · 0 评论 -
MySQL锁机制
一、概述数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。MySQL的锁机制比较简单,其最 显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。...原创 2021-05-25 22:57:53 · 114 阅读 · 0 评论 -
MySql基础知识汇总
1.SQL语句主要分为四类:DDL,DML,DQL,DCL数据定义语言(DDL):主要操作数据库以及表的create,drop,alter等操作;数据操纵语言(DML):主要对表数据进行insert,update,delete等操作;数据查询语言(DQL):用于从表中获取数据,通常最常用的为保留字SELECT,并且常与FROM子句、WHERE子句组成查询SQL查询语句;数据控制语言(DCL):主要控制用户或用户组对数据库对象的访问权限,一般通过GRANT和REVOKE来进行权限控制操作;2.S原创 2021-05-11 21:31:09 · 233 阅读 · 0 评论 -
MySQL事务详解
事务是应用程序中一系列严密的操作,用来保证数据库的完整性。MySQL中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。mysql默认自动提交事务。原创 2020-11-19 22:40:50 · 2811 阅读 · 2 评论 -
Mybatis与Hibernate的区别:
hibernate是全自动,而mybatis是半自动。hibernate完全可以通过对象关系模型实现对数据库的操作,通过实体对象与数据库的表进行映射来自动生成sql。而mybatis仅有基本的字段映射,对象数据以及对象实际关系仍然需要通过手写sql来实现和管理。hibernate数据库移植性远大于mybatis。hibernate通过它强大的映射结构和hql语言,大大降低了对象与不同数据库(oracle、MySQL等)的耦合性,而mybatis由于需要手写sql,因此sql中很容易包含一些不同的数据.原创 2020-10-21 21:43:37 · 269 阅读 · 0 评论 -
sql优化总结
1、合理的创建索引:(1)一般在查询条件中的字段可以使用索引:比如where、order by等语句后的字段。(2)IS NULL在字段允许为空的会走索引,在字段不允许为空的情况下不走索引。(3)IS NOT NULL不管字段允不允许为空都不走索引。(4)在’<>’、’ != ‘、‘NOT IN’前的字段不走索引。(5)‘NOT IN’ 会对内外表都进行全表扫描,没有用到索引;而’NOT EXISTS’ 的子查询依然能用到表上的索引。所以无论那个表大,用not exists都比not原创 2020-10-24 15:25:03 · 229 阅读 · 0 评论 -
数据库索引原理
一、什么时数据库索引?数据库索引是数据库管理系统中一个排序的数据结构,这种数据结构主要以「平衡树」(非二叉),也就是b tree或者 b+ tree为主,当然有的数据库也使用哈希桶作用索引的数据结构。二、数据库索引的作用?1、快速的查找数据。如果没有索引,通常会全表扫描数据,如果表的数据非常大的话,一条一条的去匹配的话,最坏的情况下需要匹配O(n)最坏时间复杂度;而通过索引的话,不需要全表扫描,一般只需要O(log n)次就可以定位到具体的数据,大大减少了查询速度。2、管理数据库约束。索引通常还会用原创 2020-11-04 22:14:24 · 7092 阅读 · 0 评论 -
Mysql引擎
MySQL最常用的两种存储引擎存储引擎是数据库的核心,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,根据实际的需求使用合适的存储引擎可以更好的提升数据库的使用效率。1. 存储引擎的查看SHOW ENGINES;2. MySQL默认的引擎 InnoDBInnoDB是默认的数据库存储引擎,他的主要特点有:InnoDB 支持事务(ACID),且支持四种隔离级别(读未提交、读已提交、可重复读、串行化),默认的为可重复原创 2020-11-14 21:06:28 · 143 阅读 · 0 评论