数据库
文章平均质量分 86
Danny_idea
热爱技术,热爱生活,一步一个脚印。
更多宝贵知识记录可以关注个人公众号:Idea的技术分享
展开
-
万字长文,彻底搞懂分布式缓存Redis
Linux的io模型Redis的底层原理,数据结构,内存管理Redis的线程模型,持久化策略,Redis的几种架构模式,主从,哨兵,集群Redis的持久化策略,AOF和RDB原创 2022-12-18 22:14:42 · 1424 阅读 · 0 评论 -
大话Redis系列--深入探讨多路复用(上)
今天让我们一起来探讨一下多路复用在redis中的具体实现原理。Redis客户端和服务端的连接访问介绍之前的文章中我们有稍微提到过,Redis的客户端和服务端之间是通过resp协议进行链接通信的。这种通信的本质其实是借助了socket套接字进行网络连接。如下图所示:当客户端的jedis和redis服务器进行连接的时候,首先需要在对应操作系统的内核中建立连接,接着才会将对应的链接分配到指定的redis服务端程序当中。假设redis采用了默认的6379端口,那么对应的链接请求就会发送到对应的进程上。如何原创 2021-09-01 10:08:22 · 326 阅读 · 0 评论 -
大话Redis系列--实战案例总结(下)
关于Redis的介绍Redis是一种为了解决高并发,高可用,高拓展,大数据等系列问题的数据库解决方案,同时也是一种可以支持内存以及持久化的日志型key-value数据库。NOSQL,这是一种非关系型数据库,全面叫做Not only sql。Redis数据库的原理设计Redis内部默认提供了16个数据库,在redis-conf里面可以进行选取。如果在使用Redis过程中需要进行数据库切换的话可以通过select 命令去执行操作。图片: https://uploader.shimo.im/f/gQQ4原创 2021-07-05 22:53:43 · 423 阅读 · 1 评论 -
大话Redis系列--实战案例总结(上)
在工作中总会有遇到过使用Redis的场景,除了最简单的JWT案例之外,Redis还有很多丰富的应用落地案例,这个周末特意整理了一批经典的Redis使用案例。电商购物车模型电商网站中的购物车就是一个经典的可以使用Redis来进行实现的案例,(这里我只是说可以使用,不排除有些电商平台的购物车是用其他分布式缓存组件实现的)。这里我截取了某东的购物车界面:其实可以发现,这里的很多操作细节正好可以借助Redis的map结构来进行实现。添加商品hset cart:1001 10088 1增加数量hi原创 2021-07-04 23:23:08 · 620 阅读 · 0 评论 -
使用redis的scan指令详解
在生产环境中使用了keys指令之后容易导致出现短时间内的请求堵塞,这种情况在高并发环境中是比较致命的存在,因此需要尽可能地避免这种情况发生。常用的查询某些key的指令:scanjedis使用方式:public List<String> scanAll(String cursor, String pattern, Integer limit) { try (Jedis jedis = iRedisFactory.getConnection()) { List<原创 2020-12-24 18:53:57 · 2331 阅读 · 1 评论 -
分布式事务之超详细的Seata实践记录
前两周花了些时间在研究tcc分布式事务的一些相关基础上边,这周来写一篇关于seata的实践文章。网上关于seata落地的demo其实也蛮多的,自己在结合案例和相关文章进行实际落地的过程中踩了不少坑,所以这篇文章主要记录关于落地案例中遇到的困难。技术选型SpringBoot + Dubbo + JdbcTemplate + MySQL + Seata + Nacos使用场景购买商品的时候,扣减库存并且同时插入一条订单数据。ps:简单的模拟场景,没有做锁定库存相关的复杂操作,只是为了验证seata能原创 2020-11-15 16:59:15 · 1833 阅读 · 0 评论 -
谈下我对TCC的一些理解
上一篇文章中讲解到了一些关于分布式事务模型2pc的简单介绍。2pc协议更多是应用于并发访问量不大的跨库场景中。但是由于其使用了大事务的原理,会在性能层面上造成一定的损失。下边来介绍一下另外一种技术方案:tcc。在过去的一周时间内,自己利用了一些碎片时间,大概地实践了下tcc这种设计思路在分布式事务应用中的落地实现。在讲解tcc之前,我们先来说说分布式环境中的一些必备理论基础内容点:CAP理论CAP定理是由加州大学伯克利分校Eric Brewer教授提出来的,他指出WEB服务无法同时满足以下3个属原创 2020-11-09 09:07:07 · 2035 阅读 · 0 评论 -
分布式事务之2PC
最近在工作中接触到了一些数据源切换的任务,需要处理到一些和分布式事务相关的模块,于是今天特意来总结一些关于分布式事务内容的技术要点,方便以后做技术分析的时候能够多考虑一些应用场景。本地事务某个业务场景中,需要往同一个数据库的多张表执行写操作,一旦有任意环节出现了异常,所有的写操作都需要执行回滚操作,保证数据的一致性和准确性,这一致性的保证我们一般称之为“事务”。所以也可以说”事务“是保证数据准确和一致的一种手段。业界常用的数据库如:MySQL,Oracle,SqlServer,Postgre Sql都原创 2020-11-01 22:45:13 · 685 阅读 · 0 评论 -
小林求职记(一):面试官:什么是大事务?小林哥:就是 很大...的...事务??
最近疫情期间跳槽不易,在外包公司工作了5年的小林在某直聘软件上边投递了好几家互联网公司的java工程师岗位。在经历了快半年的无人问津之后,终于被一家公司的技术leader叫去了面试。到了南山科技园的某栋大楼地下,看了下时间,距离面试约定时间还有大概15分钟。小王慢慢悠悠地步入了这栋科技大楼,在前台坐下后,过了不久,面试官便赶来了。面试官你好,请自我介绍一下吧。小林你好,我是xxxxx面试官扫了下我的简历,发现了简历上的一点:熟悉mysql数据库。这时候面试官笑了笑,仿佛心里头在盘算着后边该怎么问原创 2020-07-15 07:28:55 · 644 阅读 · 1 评论 -
MySQL数据备份实践和整理
本文部分内容参考来了以下文章:https://blog.csdn.net/helloxiaozhe/article/details/77680255http://c.biancheng.net/view/1092.html感谢这两位博主的分享今天主要来整理下关于MySQL的安全备份问题。最近遇到一个任务,需要对一台服务器上边的数据进行安全备份,为此我特地整理了常见的安全备份方案。按照常...原创 2020-04-19 10:13:30 · 465 阅读 · 1 评论 -
Mongodb数据库常用指令归纳整理(详解)
废话不多说,直接就是对mongodb执行增删改查操作了。首先需要链接到对应的用户账户,获取相关的操作权限:插入技巧简单插入命令db.test.insert({ title:'测试标题', author:'文章作者', createTime: new Date() })mongodb里面的创建时间可以通过new Date函数来获取到。插入数据的时候,背...原创 2020-04-05 22:12:10 · 442 阅读 · 0 评论 -
新增数据添加IF逻辑判断操作
新增一条数据的时候,添加if判断逻辑操作,具体sql如下:(MySQL数据库)insert into t_coupon_record(account_id,coupon_id,coupon_name,valid_status) select 1002,1,'新人优惠5元代金券',1 from DUAL where not exists (select account_id from t_c...原创 2020-04-05 21:51:27 · 1173 阅读 · 0 评论 -
MySQL的SQL执行背后隐藏了什么
MySQL的基本体系和架构介绍相信在大部分的程序员在工作中都有接触过MySQL这款数据库,在MySQL的官网上边,你会看到这样的一段介绍内容:大致翻译过来的意思就是说:MySQL是世界上最受欢迎的开源数据库。无论您是快速增长的Web资产,技术ISV还是大型企业,MySQL都能经济高效地帮助您交付高性能,可扩展的数据库应用程序。这款开源的数据库,其源码在github上边的地址为:https...原创 2020-01-22 23:00:52 · 278 阅读 · 0 评论 -
MySQL的基本体系和架构介绍
你好,我是idea。本文是该专栏的第一篇文章,主要是聊聊关于MySQL的整体架构和它的一些背景介绍。之所以我把这一讲的内容放在了第一篇,是因为我认为对于数据库的理解和学习应该是先从总体入手,再到细微的部分深入挖掘,这样的学习过程会给自己留下更加深入的印象。相信在大部分的程序员在工作中都有接触过MySQL这款数据库,在MySQL的官网上边,你会看到这样的一段介绍内容:大致翻译过来的意思就是说...原创 2019-12-12 00:01:56 · 811 阅读 · 0 评论 -
数据的异构实战(一) 基于canal进行日志的订阅和转换
什么是数据的异构处理。简单说就是为了满足我们业务的扩展性,将数据从某种特定的格式转换到新的数据格式中来。为什么会有这种需求出现呢?传统的企业中,主要都是将数据存储在了关系型数据库中,例如说MySQL这种数据库,但是为了满足需求的扩展,查询的维度会不断地增加,那么这个时候我们就需要做数据的异构处理了。常见的数据异构有哪些?例如MySQL数据转储到Redis,MySQL数据转储到es等等,也是...原创 2019-10-14 23:45:00 · 912 阅读 · 0 评论 -
事务的隔离级别和传播属性
什么是事务?我的理解就是:要么全部都要执行,要么就都不执行。经典的案例就是转账,这种案例都已经烂大街了,不妨试着联想多点应用场景。不妨试着联想多点应用场景,例如说公司的考勤系统,每次请假的时候,既要记录一条个人流水信息,同时还要提交考勤信息给相关的审核人。为什么会出现事务的隔离级别?我们都知道,数据库都是有相应的事物隔离级别。之所以需要分成不同级别的事务,这个是因为在并发的场景下,读取数据可...原创 2019-07-11 22:45:34 · 224 阅读 · 0 评论 -
当数据量达到百万级别的时候,分页该如何处理?
最近遇到了这么一个情况,数据库里面的数据由于长期的堆积,导致数据量不断的上升,而后台的系统每次进行分页查询的时候,效率都会降低很多。后来查看了一下之后,发现...原创 2019-06-02 23:06:23 · 2701 阅读 · 5 评论 -
深入浅出MySQL(四) 云端MySQL的那些坑
云端一直都是一个比较扑朔迷离的地方(对于我个人来说),例如说配置mysql的用户权限,还有编码格式,这里主要记录之前LZ在前几次的项目部署上遇到的问题: 这里用到的操作系统是centos7,数据库是mysql5.7.1,云平台是阿里云修改User表里面的密码在mysql5.7.1里面出现了和之前的mysql5.5常规配置不太一样的一个内容部分,今天我所要说的这个部分是用户名和密码那一...原创 2018-07-24 10:46:08 · 950 阅读 · 0 评论 -
深入浅出MySQL(五) MySQL5.5的中文乱码坑
这一次的记录主要是针对mysql5.5版本里面的中文乱码而言,这里用到的操作系统是centos7,数据库是mysql5.5,云平台是阿里云一、登录MySQL查看用SHOW VARIABLES LIKE ‘character%’;下字符集,显示如下:+--------------------------+----------------------------+| Variable_n...原创 2018-07-24 11:00:13 · 3135 阅读 · 0 评论 -
深入浅出MySQL(六) Mysql里面的基本数据类型
decimal类型: 即DECIMAL(M,D),其中M表示数字总的个数,D表示小数点后面数字的位数,上例中的取值范围为-999.99~999.99。(float不够时取近似值 decimal直接截断,建议存钱的时候用这种格式)text类型: 最大长度65535个字元longtext类型: 最大长度为:4294967295(2^32-1)个字符。blob类型: 适合于存储二进...原创 2018-07-24 11:11:54 · 272 阅读 · 0 评论 -
深入浅出MySQL(一) Mysql里面经常用到的函数总结
在Mysql里面count,max,sum,avg,这些都是一些经常用到的函数,但是除了这些以外,今天我们来了解一些别的函数。字符串类型函数1.Concat函数: select CONCAT(“aaa”,”bbb”,”ccc”) as finalName; 运行的结果如下: 这个函数的作用在于,将几个字符串链接在一起,然后将其拼接显示出来。2.Insert函数: sel...原创 2018-07-15 19:09:24 · 956 阅读 · 0 评论 -
深入浅出MySQL(二) 查询技巧
今天这篇文章主要是来讲解一些mysql高级查询技巧方面的内容:时间宝贵,现在我们直接进入主题:技巧1:union和union all联表查询Mysql的联合查询命令UNION和UNION ALL,总结了使用语法和注意事项,以及学习例子和项目例子,需要的朋友可以参考下 一、UNION和UNION ALL的作用和语法 UNION 用于合并两个或多个 SELECT 语句的结果集,并消去表中任...原创 2018-07-15 19:41:51 · 956 阅读 · 0 评论 -
深入浅出MySQL(七) 如何通俗地来理解表的横向拆分的实现原理
今天的这个案例主要是正对于讲解这个Mysql的横向拆分技术: 首先我们来模拟一个场景,用户表里面有着一千万的数据量的内容,这个时候我们该如何进行优化呢? 这个时候不妨试试用横向拆分的技术来进行优化。 首先我们来看看数据库里面的内容: 一共有一千万条数据信息,这个时候我们可以继续深入: 假设有一个请求要开展用户搜索:SELECT * from user where userna...原创 2018-08-03 21:01:08 · 1884 阅读 · 0 评论 -
重复造轮子(4) — 手写orm框架Ibernate
最近周边有许多朋友都来问我写框架不知道该如何开始下手,没有头绪,哈哈哈其实我一开始也是这样子慢慢熬过来的。所以今晚的这篇文章主要是讲解一些常规的orm框架的底层原理是如何实现的思路,同时也开源一套自己编写的orm框架。常规的hibernate框架,mybatis框架而言,他们都有着自己的一些特点,就是将jdbc封装地特别方便,供开发者来引用。如果读者们有耐心,可以去看看hibernate的源码...原创 2018-08-05 11:29:09 · 684 阅读 · 0 评论 -
深入浅出MySQL(八) 超详细的MySQL主从配置
随着系统应用访问量逐渐增大,单台数据库读写访问压力也随之增大,当读写访问达到一定瓶颈时, 将数据库的读写效率骤然下降,甚至不可用;为了解决此类问题,通常会采用mysql集群,当主库宕机后,集群会自动将一个从库升级为主库,继续对外提供服务;那么主库和从库之间的数据是如何同步的呢?结合上边的这张图来进行讲解。首先我们称呼主节点为Master,从节点为Slave。首先Slave 上面的IO线程发起...原创 2019-01-11 10:14:31 · 392 阅读 · 0 评论 -
深入浅出MySQL(九)一看就懂的基于MYCAT的数据库分表分库案例
MyCat的介绍关于mycat的基础理论知识可以去看看以下文章https://blog.csdn.net/wrs120/article/details/80417345MyCat的安装使用首先我们需要在指定路径下进行mycat的安装。[root@idea-centos mycat]# wget http://dl.mycat.io/Mycat-server-1.4-beta-201506...原创 2019-01-11 10:46:03 · 730 阅读 · 0 评论 -
深入浅出MySQL(十一)关于mysql里面的bin-log日志
mysql里面的bin-log日志,相信大家都有过相应的了解,但是对于bin-log日志而言,具体的内容是做什么的,今天小编特意抽空学习了一下,下边是我的笔记心得。主从同步的一个基本原理MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。由于在主从架构...原创 2019-01-22 10:02:52 · 184 阅读 · 0 评论 -
深入浅出MySQL(十)关于mysql查询的一些优化技巧
EXPLAIN先是最简单的一个分析:EXPLAIN(SELECT admin_name FROM w_admin )这里面显示了查询类型select_type为简单查询,type指的是字段,possible_keys是指使用了哪个索引来进行搜索,key是指mysql实际使用的索引,key_len是指响应索引的长度,ref是指链接的匹配条件(例如外键查询):rows是指mysql根据统计信息...原创 2019-01-22 10:14:25 · 303 阅读 · 0 评论 -
Redis里面的aof和rdb
Redis里面的持久化:RDB和AOF关于redis里面的持久化方案有两种:RDB(Redis DataBase)AOF(Append Only File)关于Rdb这是redis里面默认提供的一套持久化技术方案,专门用于保证内存中的数据被写入到磁盘里面去。主要配置是修改相应的redis.conf来实现redis里面的这一行主要是用于将数据持久化在redis的dump.rdb文件里面...原创 2019-02-16 20:11:49 · 266 阅读 · 0 评论 -
深入分析MySQL索引原理
最近花了大概一周的时间重新深入研究了一遍MySQL的内容,近期可能会输出一些关于MySQL方面的知识干货,希望各位读者喜欢。什么是索引?为什么要建立索引?关于索引的理解,个人更加喜欢将其比喻为字典里面的目录,根据字典来进行查询的速度远大于每一页逐个逐个字排查的速度。索引主要用于快速找出在某个列中有特定值的行,倘若不使用索引,MySQL必须从第一条记录开始读完整个表,直...原创 2019-03-27 10:48:29 · 569 阅读 · 5 评论 -
阿里中间件--Canal框架实践
最近在工作中需要处理一些大数据量同步的场景,正好运用到了canal这款数据库中间件,因此特意花了点时间来进行该中间件的的学习和总结。背景介绍早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量...原创 2019-05-08 20:53:21 · 2485 阅读 · 0 评论 -
lucene从理论到实践
lucene里面常用的功能总结:首先我们需要导入相关的依赖配置信息: <!--核心jar包--> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artif...原创 2019-05-23 15:07:31 · 250 阅读 · 0 评论 -
深入浅出MySQL(三) 常用的日期查询归纳
最近总结了一下关于日期查询里面常用到技巧,于是在此做一些相应的归纳,希望能够帮助到各位开发者们:这里是即将用到的数据表: 数据表里面的date字段的格式为datetime类型 创建表格的sql如下所示:DROP TABLE IF EXISTS `tips`;CREATE TABLE `tips` ( `id` int(11) NOT NULL AUTO_INCREMENT...原创 2018-07-24 10:27:25 · 317 阅读 · 0 评论