数据库
文章平均质量分 95
程序源日志
练习两年半的架构师、拥有PMP证书、高项证书、深圳一线开发工程师、拥有三项软件专利
展开
-
Mysql 和 Redis 数据如何保持一致,一文带你学会
Read Through 和 WriteThrough 的流程类似,只是在客户端查询数据 A 时,如果缓存中数据 A 失效了(过期或被驱逐淘汰),则缓存会同步去数据库中查询数据 A,并缓存起来,再返回给客户端。Redis 是用来当缓存,用来提升数据访问的性能。可见,最后缓存中的数据 A 和数据库中的数据 A 是一致的,理论上可能会出现一小段时间数据不一致,不过这种概率也比较低,大部分的业务也不会有太大的问题。可见,最后缓存中的数据 A 跟数据库中的数据 A 是不一致的,缓存中的数据 A 是旧的脏数据。原创 2023-02-03 16:16:39 · 132 阅读 · 0 评论 -
如何设计一个高可用、高并发秒杀系统,一文带你了解
如今的互联网已经在海量服务领域有了很成熟的理论,因此自己也很庆幸,能够从 0 到 1 完整践行海量服务。微视春节项目中的集卡瓜分活动,是一个典型的秒杀场景,自己参与其中,分享一些心得和总结。漏斗型业务,指的是,用户的请求,从客户端到 db 层,层层递减,递减的程度视业务而定。直筒型业务,指的是用户请求 1:1 的洞穿到 db 层,如下图所示。上图是一个典型的互联网业务,用户完成一个写操作,一般会通过接入层和逻辑层,这里的服务都是无状态,可以通过平行拓展去解决高并发的问题;原创 2023-02-02 16:03:21 · 141 阅读 · 0 评论 -
掌握MySQL 数据库规约落地及优化实战
前言MySQL 数据库承载了掌门绝大部分核心业务的数据存储,因此 MySQL 数据库的稳定运行至关重要。DBA 团队一直致力于保障数据库环境的平稳运行,编写有掌门 MySQL 数据库规范文档,也提供有掌门数据库查询上线运维平台。规范虽然很全面,但是如果不了解数据库原理,不知道规范带来的效率提升,开发人员并不一定会严格遵守,规范也就失去了意义。本篇文章旨在从数据库原理出发,从三个角度(建表、索引、SQL 语句)进行深入分析,在了解数据库底层原理的基础上,理解数据库规范、以及数据库优化方法。一、建表如果把 My原创 2023-02-02 16:00:21 · 181 阅读 · 0 评论 -
回归基础学习-MySQL语法全面复习
DDL 的主要功能是定义数据库对象(如:数据库、数据表、视图、索引等)。原创 2023-02-01 22:59:45 · 152 阅读 · 0 评论 -
MySQL 三万字精华总结 + 面试100 问,看完吊打面试官绰绰有余
正如我们上面介绍 InnoDB 存储结构,索引与数据是共同存储的,不管是主键索引还是辅助索引,在查找时都是通过先查找到索引节点才能拿到相对应的数据,如果我们在设计表结构时没有显式指定索引列的话,MySQL 会从表中选择数据不重复的列建立索引,如果没有符合的列,则 MySQL 自动为 InnoDB 表生成一个隐含字段作为主键,并且这个字段长度为6个字节,类型为整型。在Innodb中,索引分叶子节点和非叶子节点,非叶子节点就像新华字典的目录,单独存放在索引段中,叶子节点则是顺序排列的,在数据段中。原创 2023-02-01 22:58:05 · 99 阅读 · 0 评论 -
【MySQL数据库】sql优化的15个小技巧,学会性能提升100%
如果某天你负责的某个线上接口,出现了性能问题,需要做优化。那么你首先想到的很有可能是优化,因为它的改造成本相对于代码来说也要小得多。那么,如何优化sql语句呢?这篇文章从15个方面,分享了sql优化的一些小技巧,希望对你有所帮助。最近无意间获得一份BAT大厂大佬写的刷题笔记,一下子打通了我的任督二脉,越来越觉得算法没有想象中那么难了。原创 2022-12-13 09:32:22 · 817 阅读 · 0 评论 -
几种MySQL常见SQL错误用法,看完MySQL性能提升100%
数据库编译器产生执行计划,决定着SQL的实际执行方式。但是编译器只是尽力服务,所有数据库的编译器都不是尽善尽美的。上述提到的多数场景,在其它数据库中也存在性能问题。了解数据库编译器的特性,才能避规其短处,写出高性能的SQL语句。程序员在设计数据模型以及编写SQL语句时,要把算法的思想或意识带进来。编写复杂SQL语句要养成使用 WITH 语句的习惯。简洁且思路清晰的SQL语句也能减小数据库的负担。原创 2022-12-13 09:29:55 · 290 阅读 · 0 评论 -
MySQL数据库死锁了,怎么办?一文带你读懂关键原因
之前分享过的文章,然后很多读者对「插入意向锁」认识很迷糊。大家误以为「插入意向锁」是意向锁,也就是表锁,确实这个名字很让人误解。但是,。原创 2022-12-12 13:48:08 · 511 阅读 · 0 评论 -
MySQL数据库的性能优化及自动化运维与Mysql高并发优化详细教程
首先,我们来看看DBA的具体工作,我觉得 DBA 真的很忙:备份和恢复、监控状态、集群搭建与扩容、数据迁移和高可用,这是我们 DBA 的功能。了解这些功能以后要对体系结构有更加深入的了解,你不知道怎么处理这些故障和投诉的事情。所以我们要去了解缓存/线程、SQL优化、存储引擎以及SQL审计以及锁与实务、体系结构更深一点,就去研究内核原理和源码定制,DBA有这么多工作,他们就像一个小怪兽一样等着我们去解决。今天我站在更加全面的角度跟大家分享一下我觉得我在这一年多DBA工作当中的经验,希望可以给大家带来启发和帮助原创 2022-12-06 09:59:24 · 1092 阅读 · 0 评论 -
【Java语言】内存管理(堆、栈、方法区)的存储是如何
java内存管理简介首先我们要了解我们为什么要学习java虚拟机的内存管理,不是java的gc垃圾回收机制都帮我们释放了内存了吗?但是在写程序的过程中却也往往因为不懂内存管理而造成了一些不容易察觉到的内存问题,并且在内存问题出现的时候,也不能很快的定位并解决。因此,了解并掌握Java的内存管理是我们必须要做的是事,也只有这样才能写出更好的程序,更好地优化程序的性能。概述Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干不同的数据区域,这些区域都有各自的用途以及创建和销毁的时间。Java虚拟原创 2022-12-03 21:17:40 · 963 阅读 · 1 评论 -
【MySQL数据库】order by 是怎样排序的?怎么优化?如何实现优化?
刚换了新工作,用了两周时间准备,在 3 天之内拿了 5 个 offer,最后选择了广州某互联网行业独角兽 offer,昨天刚入职。这几天刚好整理下在面试中被问到有意思的问题,也借此机会跟大家分享下。这家企业的面试官有点意思,一面是个同龄小哥,一起聊了两个小时(聊到我嘴都干了)。二面是个从阿里出来的架构师,视频面试,我做完自我介绍之后,他一开场就问我:我一愣,随之意识到这是个坑。他肯定想问我某方面的原理了,恰好我研究过索引。就回答:他:还好我又复习,基本上排序缓冲区、怎么优化之类的都答到点子上。今天也跟大家盘原创 2022-12-03 21:16:07 · 704 阅读 · 0 评论 -
【MySQL数据库】存储引擎的详细说明,全文配图
最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户 端验证它所具有的操作权限。第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询, SQL 的分析和优化,部分内置函数的执行。所有跨存 储引擎的功能也在这一层实现, 如过程、函数等。存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。主要是将数据存储在文件原创 2022-12-03 21:14:06 · 192 阅读 · 0 评论 -
【MySQL数据库】表数据多久刷一次盘?一文带你搞懂,附有图片
事情是这样的,在某乎的邀请回答中看到了这个问题:-然后当时我没多想就啪一下写下来这样的答案:但是,后面有兄弟在下面说:”我唔知你喺讲乜“。后面我回过头去看,当时写的确实有点过于跳跃了,过一段时间再去看有些不是那么连贯,打算重新把这个事情讲清楚。我们这篇「短文」讨论的是【MySQL 表数据多久刷一次盘】,从这个标题中我们可以分裂成两个问题:我们分开来讨论。看上去有点废话,肯定是将数据刷入磁盘。所以我们更多需要讨论的是【数据是以什么样的形式被刷入磁盘】。在 InnoDB 中,页是数据被管理的最小的单位。当使用原创 2022-12-03 21:08:43 · 665 阅读 · 2 评论 -
【MySQL数据库】事务与锁详解说明一文搞懂
事务的典型场景在项目里面,什么地方会开启事务,或者配置了事务?无论是在方法上加注解,还是配置切面。比如下单,会操作订单表,资金表,物流表等等,这个时候我们需要让这些操作都在一个事务里面完成。当一个业务流程涉及多个表的操作的时候,我们希望它们要么是全部成功的,要么都不成功,这个时候我们会启用事务。在金融的系统里面事务配置是很常见的,比如行内转账的这种操作,如果我们把它简单地理解为一个账户的余额增加,另一个账户的余额减少的情况(当然实际上要比这 复杂),那么这两个动作一定是同时成功或者同时失败的,否则就会造成原创 2022-12-03 21:06:31 · 152 阅读 · 0 评论 -
【MySQL数据库】存储引擎的详细解析和方式
存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。mysql5.5版本之后默认的引擎是InnoDB,可以根据sql语句查看建表语句#查看建表语句 默认存储引擎是InnoDB。原创 2022-12-02 09:54:25 · 205 阅读 · 0 评论 -
一文了解MySQL的Buffer Pool的工作原理
Innodb 存储引擎设计了一个缓冲池(Buffer Pool),来提高数据库的读写性能。Buffer Pool 以页为单位缓冲数据,可以通过 innodb_buffer_pool_size 参数调整缓冲池的大小,默认是 128 M。Free List (空闲页链表),管理空闲页;Flush List (脏页链表),管理脏页;LRU List,管理脏页+干净页,将最近且经常查询的数据缓存在其中,而不常查询的数据就淘汰出去。;将 LRU 链表 分为young 和 old 两个区域。原创 2022-12-02 09:40:10 · 636 阅读 · 0 评论 -
【MySQL数据】数据库面试题附加答案加导图(2023年最新版)
(1)read uncommited :读到未提交数据(2)read committed:脏读,不可重复读(3)repeatable read:可重读(4)serializable :串行事物每当行被更改时,时间戳字段将获取当前时间戳。列设置为 AUTO INCREMENT 时,如果在表中达到最大值,会发生什么情况?它会停止递增,任何进一步的插入都将产生错误,因为密钥已被使用。怎样才能找出最后一次插入时分配了哪个自动增量?原创 2022-12-01 13:51:03 · 431 阅读 · 0 评论 -
SQL性能优化技巧,常见优化方法,一文就让你学会
单路排序会将整行所有数据缓存到 sort buffer 中,双路排序只将主键id和排序字段放入到 sort buffer 中排序,在根据排序好的数据,从原来表中根据id查询数据返回给客户端。如何选项单路排序还是多路排序?原创 2022-11-30 14:09:35 · 3595 阅读 · 0 评论 -
【Java】锁的原理以及应用最详细教程
一、锁锁是一种互斥的机制,在多线程环境中实现对资源的协调与控制,凡是有资源被多线程共享,涉及到修改的情况就要考虑锁的加持。(0)Java锁原理0)引申:Java对象结构Java对象结构分为3部分:①对象头(包括:Mark Word(存储了当前对象运行时的状态信息,如HashCode、指向锁记录的指针等)、Class Pointer(指针,指向当前对象类型所在方法区中的Class信息));如图,MarkWord结构(jdk1.8)HotSpot 64位操作系统(一个对象的markWord在内存占用8字节)锁标原创 2022-11-30 13:47:17 · 1780 阅读 · 0 评论 -
MySQL5.7版本安装配置教程(超级详细)
Server Computer 是像主要用于像FTP,email,web服务器等等。Development Computer 适合个人开发学习使用的。Dedicated Computer 只用作MySQL服务器。“Developer Default”是开发者默认。“Server only”仅作为服务器安装。“Clientonly”仅作为客户端安装。“Custom”是自定义安装。注:这里选择的是64位系统。“Full”是完整安装。原创 2022-11-30 13:30:12 · 6884 阅读 · 9 评论 -
MySQL 数据库面试: 经典 35 问,最详细解析附送答案
相信大家小时候学习汉字的时候都会查字典,想想你查字典的步骤,我们是通过汉字的首字母 a~z 一个一个在字典目录中查找,最终找到该字的页数。想想,如果没有目录会怎么样,最差的结果是你有可能翻到字典的最后一页才找到你想要找的字。索引就**「相当于我们字典中的目录」**,可以极大的提高我们在数据库的查询效率。回表就是先通过数据库索引扫描出该索引树中数据所在的行,取到主键 id,再通过主键 id 取出主键索引数中的数据,即基于非主键索引的查询需要多扫描一棵索引树.原创 2022-11-29 14:02:38 · 684 阅读 · 0 评论