在以上工程的基础上,理解 MyBatis 框架的流程,我们可以自己尝试一个“MyBatis 框架”,以便更深入了解 MyBatis。 新建 Maven 项目。 延用以上工程的 Maven 依赖。但这里请注意,我们的目的是自己重写 “MyBatis”,所以就不需要引入 MaBatis 的依赖,所以这里我注释掉了。<?xml version="1.0" encoding=
  主键的必要性:  有些朋友可能不提倡数据库表必须要主键,但在我的思考中,觉得每个表都应该具有主键,不管是单主键还是主键,主键的存在就代表着表结构的完整性,表的记录必须得有唯一区分的字段,主键主要是用于其他表的外键关联,本记录的修改与删除,当我们没有主键时,这些操作会变的非常麻烦。  主键的无意义性:  我强调主键不应该具有实际的意义,这可能对于一些朋友来说不太认同,比如订单表吧,会有“订单编
问题最近公司想把原Oracle数据库都迁移到Mysql,这个切换需要一段时间过渡,所以存在Oracle、Mysql在项目中同时使用的情况。这样就需要使用多数据源的技术。多数据源配置本身比较简单,但有一个场景出现了问题。考虑如下代码:// 通过try-catch实现insertOrUpdate Data data = new Data(); try{ dataMapper.insert(d
一 序      本文属于《MYSQL运维内参》第九章读书笔记,因为INNODB的三大特性:插入缓存,两次,自适应hash,还是觉得作者先介绍插入缓存会更有助于理解。      为啥会有两次?必要了解partial page write 问题 :         InnoDB 的Pag
转载 2023-08-10 06:28:22
60阅读
主从复制:数据库接收到请求后, 由主节点的内置客户端执行sql语句,包括"增删改查”,其中"查”是读操作,不涉及主从复制.在主节点中有一个二进制日志文件bin.log, 当用户执行操作(增删改)的sql语句时, 这些语句会被记录到二进制文件bin.log中, 这个二进制文件携带一个指针标识position,默认是120,当二进制日志文件的内容发送改变后,指针标识position也会改变。从节点中
MyBatis是一个优秀的基于Java的持久层框架。其内部封装了JDBC,使开发者只需要关注SQL语句本身,不用花费精力去处理如注册驱动,创建Connection,配置Statement等繁琐过程。我们通过测试案例来看下MyBatis的基本API的使用及相关简介;public void insertTest(Student student) { try { // 1.加载主配置文件
参考文章:基于Redo Log和Undo Log的MySQL崩溃恢复流程MySQL的Double Write并不难理解 答疑文章(一):日志和索引相关问题《MySQL技术内幕:InnoDB存储引擎》作用double write(两次)使数据页更可靠。当InnoDB存储引擎正在向磁盘写入数据页时(16KB的数据页只写入了前4KB),这时发生宕机,这种情况称为部分失效(partial p
转载 2023-09-06 20:19:59
218阅读
# 实现MySQL的流程 ## 1. 概述 MySQL是一种数据库架构模式,它允许多个主节点同时读写数据,从而提高系统的可用性和性能。在实际使用中,可以使用MySQL的GTID(全局事务标识)和主从复制的功能来实现。 ## 2. 流程图 ```mermaid flowchart TD A(配置主节点1) --> B(配置主节点2) B --> C(配
原创 2023-09-18 18:37:57
116阅读
二、迁移类测试策略1、概述随着业务需求或数据量增长到一定程度,往往需要进行数据库切换,这里就伴随这数据迁移。关键字: 全量数据迁移,增量数据迁移,分库分表,数据,oracle、mysql、hbase…,新老数据兼容,数据订正2、发布方案(迁移方案)两大类:正常发布、停机发布正常发布:可以实现线上业务无缝切换,不影响用户使用,需要保证新老数据兼容,发布过程中的数据写入等。停机发布 : 优点在于可
在学习MySQL特性的时候一直有个问题萦绕在我的心头:我们都知道MySQL在进行脏页刷新的时候会先将【内存中的doublewrite buffer】中的数据刷新到【磁盘中共享表空间的doublewrite buffer】中,然后再将脏页数据刷新到【磁盘数据文件.idb】中。当系统发生故障后MySQL可以利用undo log和来完成故障恢复工作。那么如果当系统在刷新脏页数据到【磁盘中共享表空间的
# 实现Redis的流程 ## 简介 Redis是一种高性能的键值存储系统,常用于缓存、消息队列等场景。在实际应用中,为了保证数据的一致性和可靠性,我们常常需要进行操作,即在写入Redis数据之前先删除旧数据,并在写入新数据后再次删除。 本文将介绍如何实现Redis的流程,以及每一步需要做什么和所需的代码。 ## 流程图 ```mermaid journey
原创 9月前
55阅读
# Java 问题的解析与示例 在Java编程中,“”问题通常指的是在多线程环境下,多个线程并发操作共享数据时可能引发的不一致性和错误。这种问题在开发高并发系统时尤为重要,了解如何识别和解决问题对于确保数据一致性至关重要。 ## 什么是问题 问题通常发生在一个线程写入数据的同时,另一个线程也在读取该数据。如果不加以控制,读取的线程可能获取到不完整或不一致的数据,从而导致不
原创 2月前
21阅读
# 如何实现"mongodb"的步骤和代码实现 ## 概述 在使用MongoDB进行数据存储时,有时候需要将数据同时写入多个集合或多个数据库中,以实现数据的冗余备份或数据同步的需求。这个过程通常被称为"MongoDB"。本文将详细介绍如何在MongoDB中实现,并提供相应的代码示例。 ## 流程 以下是实现MongoDB的一般流程,我们可以用表格形式展示: | 步骤 |
原创 9月前
36阅读
## MySQL ### 什么是MySQL? MySQL是指将MySQL数据库的数据同时写入两个地方,通常是主库和从库。这样做的目的是为了确保数据的一致性和可靠性。在主从复制的情况下,主库负责写入数据,从库负责读取数据,如果仅仅依赖主从复制可能会存在数据不一致的情况,因此引入了机制。 ### 如何实现MySQL? 在MySQL中,可以通过配置binlog和relay
原创 5月前
114阅读
# 探索 Redissyncer 机制 在现代微服务架构和分布式系统中,数据的一致性和可靠性是至关重要的。当数据在多个数据库之间同步时,如何确保所有副本中的数据都是一致的呢?“Redissyncer ”就是解决这一问题的一种高效方案。本文将深入探讨 Redissyncer 的原理、实现以及示例代码。 ## 什么是 Redissyncer ? Redissyncer 是一个用于实现
原创 11天前
16阅读
# Java 在Java编程中,我们经常会遇到的情况。是指将一个字符重复两次作为一个整体,用于表示特定的含义或实现特定的功能。本文将介绍Java中常见的用法,并给出相应的代码示例。 ## 字符串 在字符串中使用可以表示特定的含义,例如在路径字符串中使用的反斜杠表示转义字符。 ```java String filePath = "C:\\Program Files
原创 9月前
69阅读
数据库和缓存问题缓存的目的是为了减少数据库的压力,但只要用了缓存,就肯定会有不一致,2个数据源之间是没有事务的,没法保证绝对的强一致。从理论上来说,给缓存设置过期时间,是保证最终一致性的解决方案。常见的四种方案:先更新缓存,在更新数据库先更新数据库,再更新缓存先删除缓存,再更新数据库先更新数据库,再删除缓存微软和Facebook采用的更新策略是第四种:cache-asideScaling Me
文章目录读写分离读写分离引入时机主从同步延迟读写分离落地读写分离配置主模式适用场景MMM架构MHA架构主备切换配置主模式MHA搭建服务器环境搭建三台机器ssh互通MHA下载安装MHA下载MHA node安装MHA manager安装MHA 配置文件MHA 配置检测MHA Manager启动测试MHA故障转移 读写分离读写分离引入时机  大多数互联网业务中,往往读多少,这时候数据库的读会首先
转载 2023-10-05 17:52:20
8阅读
一 前言首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议本文由以下三个部分组成 1、讲解缓存更新策略 2、对每种策略进行缺点分析 3、针对缺点给出改进方案二 一致性方案先做一个说明,从理论上来说,给缓存
缓存由于其高并发和高性能的特性,已经在项目中被广泛使用,在缓存的使用中,通常会面临一个更新的问题,当数据源产生变化,如何去更新到数据库与缓存之中,并且尽量保证安全与性能。更新缓存的的Design Pattern有四种:Cache aside, Read through, Write through, Write behind caching,我们下面一一来看一下这四种Pattern。一:Cache
  • 1
  • 2
  • 3
  • 4
  • 5