
数据库
文章平均质量分 79
晓龙的Coding之路
路漫漫兮其修远兮吾将上下而求索
展开
-
关于Redis默认缓存模式旁路缓存会出现的问题
上面的三种模式的可以处理的业务场景其实并不相同,但实际的工作中其实我们只用到了Cache Aside Pattern模式,我们使用的第三方框架也是默认使用的这种方式。但是题主在这里有一个大胆的想法,我们是否可以使用异步缓存写入的形式去处理,先更新redis,然后将更新数据写入到一个有序对列,通过可靠性消费去消费数据更新数据库的数据,在高并发的场景下,如何避免数据不一致的情况了。当出现并发情况时,就会出现,如图所示的情况,线程2读取到的数据和数据库的最新数据不一致。原创 2024-08-12 23:42:42 · 412 阅读 · 0 评论 -
MySQL中使用InnoDB引擎数据存储格式分析
存储InnoDB引擎支持四种行格式:Redundant,Compact,Dynamic,Compress。下图四种行格式的对比图。鉴于上述的三种格式比较类似,题主选用Compact格式进行分析他们的行数据存储格式分析。假设我现在有如下的一张学生表,其中name和age及interest默认都为空。对于上述的四种行格式的对比,区别最大的就是是否支持紧凑型存储。原创 2024-08-13 17:57:56 · 738 阅读 · 0 评论 -
MySQL InnoDB引擎四大特性ACID实现方案分析
基于上述的理解,我们就可以知道mysql的事物的四大特性的实现方案,也清除了为什么只有InnoDB引擎才能实现事务,而MyISAM不支持事务的原因。对于每个事务都是一个不可分割的最小工作单元,整个事务中的所有操作要么全部成功,要么全部失败,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性。隔离性是指当多个事务同时对数据库进行操作时,每个事务都是独立的,一个事务的操作不会影响到其他事务,对于不同的隔离级别,隔离性的实现方案也有所不同。所谓的ACID模式,就是我们常说的事物的四大特性。原创 2024-08-18 12:20:22 · 1067 阅读 · 0 评论 -
mysql InnoDB引擎各种隔离级别的加锁机制
上述语句我们在执行时,是能成功的插入数据的,通过锁分析也可得知在RC隔离级别下,对于普通索引的数据我们只加了行级锁,但是没有加gap lock的。当我们在执行步骤4时其实就会被阻塞了,数据是没办法插入成功的,因为此时在age的的非唯一索引上加了age=4的数据的行级别锁,在非主键键索引上在age(3,4)(4,44)之间加了gap lock。最终发现,执行到步骤4时,数据是可以插入成功的,那就是因为,我们age为64的数据不在gap锁锁定age的范围(3,4),(4,44)范围内。行级锁+间隙锁组成的锁。原创 2024-08-22 12:25:59 · 2477 阅读 · 0 评论 -
达梦数据库踩坑
对于mysql我们一般是通过ip地址、端口号、用户名、密码去在mysql的连接工具当中去连接,此时如果这个登录的账号有创建数据的权限是,我们可以直接通过new Database去新建数据库。对于达梦数据来说,我们也可以通过上述的四个参数去连接数据库。但是当我们创建数据库时,需要在达梦数据库的一个模式的目录下去创建,这个操作类似于mysql当中的new Database操作。在创建数据库时,需要勾选忽略大小写敏感。不然后续做数据查询时,默认使用的表名称是大写,如果表定义使用的小写就会报错。原创 2024-09-21 00:14:43 · 1185 阅读 · 0 评论 -
Mysql表字段字符集未设置导致乱码问题
因该是测试的连接工具虽然设置了编码集,但是直接在未设置编码集的数据上进行修改时可能会出现问题,不清楚是因为第一次设置进去的数据就是错误的编码集导致的还是因为什么情况,后续的数据修改一直都会使用错误的编码集,所以导致如果不强制设置字段编码集时就会出现乱码的情况。在核对了了小伙伴的连接工具后,确认了他的客户端连接工具的编码集也设置了utf8的编码集。在和测试的小伙伴沟通后,发现对方使用的数据库连接工具是Dbeaver,但是在修改数据时将内容文本直接打开,进行编辑保存的。所以也排除掉了数据库表结构设置。原创 2025-02-27 17:54:13 · 350 阅读 · 0 评论