
数据库
文章平均质量分 91
Moonxiyue
这个作者很懒,什么都没留下…
展开
-
数据库面试题(开发者必看)
存储过程就像我们编程语言中的函数一样,封装了我们的代码(PLSQL、T-SQL)。存储过程的优点:存储过程的缺点:上面的文字我们肯定是看不懂的,也不愿意看下去的。接下来我就总结一下:视图是一种基于数据表的一种虚表有的时候,我们可能只关系一张数据表中的某些字段,而另外的一些人只关系同一张数据表的某些字段...那么把全部的字段都都显示给他们看,这是不合理的。我们应该做到:他们想看到什么样的数据,我们就给他们什么样的数据...一方面就能够让他们只关注自己的数据,另一方面,我们也保证数据表一些保密的数据不会泄露出来原创 2022-06-22 20:41:58 · 3522 阅读 · 0 评论 -
可能是最漂亮的Spring事务管理详解
这部分内容比较重要,不论是对于工作还是面试,但是网上比较好的参考资料比较少。事务是逻辑上的一组操作,要么都执行,要么都不执行。相信大家应该都能背上面这句话了,下面我结合我们日常的真实开发来谈一谈。我们系统的每个业务方法可能包括了多个原子性的数据库操作,比如下面的 方法中就有两个原子性的数据库操作。这些原子性的数据库操作是有依赖的,它们要么都执行,要不就都不执行。另外,需要格外注意的是:事务能否生效数据库引擎是否支持事务是关键。比如常用的 MySQL 数据库默认使用支持事务的 引擎。但是,如果把数据库原创 2022-06-22 15:22:24 · 172 阅读 · 0 评论 -
从-1开始实现一个中间件
别人都写从0开始实现xxx,我先从-1开始就显得更牛逼一些。今天,先开个头,来教大家怎么实现一个中间件。首先,我们新建一个多 module 的项目用于测试。项目包含两个模块,test-infra用户中间件模块的开发,demo用于测试。开发中间件项目创建 OK 了,接着开始开发一个最最最简单的中间件。在resources目录下创建META-INFA/spring.factories文件,用于自动装配,别问我啥是自动装配,然后配置一个自动装配类。实现 TestConfiguration,最简单的原创 2022-06-22 14:31:10 · 246 阅读 · 0 评论 -
42 张图带你揭秘后端技术都要学啥?
原创作者 | L的存在说到后端开发,难免会遇到各种所谓高大上的「关键词 」,对于我们应届生小白,难免会觉得比较陌生,因为在学校确实比较少遇见这些所谓高大上的东西,那么今天就带着学习的态度和大家分享这些看似可以装逼可以飞的带逼格的关键词吧。大纲当一个人或者几十个使用你的系统,哎呀我去,请求秒回,效果倍棒,于是乎简历砰砰写上却多么牛X,当面试官就会问你你这项目做了啥,测试过没,并发量如何,性能如何?你就…..当访问系统的用户越来越多,可是我们的系统资源有限,所以需要更多的 CPU 和内存去处理用户的计算请求,当原创 2022-06-21 14:56:14 · 1275 阅读 · 1 评论 -
事务、全局索引、透明分布式,再见,分区健
——陈默(墨城)阿里云数据库技术专家了解更多PolarDB-X 内容:developer.aliyun.com/topic/polar…在刚刚发布的PolarDB-X 2.1.0版本中,开源了透明分布式能力,能带给用户完全不同的透明分布式数据库使用体验。其中,一个最明显的不同,就是用户不再需要关注分区健这个概念,这也是副标题《再见,分区健》的来由。1970 年代末,分区的概念首先在并行数据库系统中出现,用来代表一组记录的集合。在并行数据库中,表首先按照某种规则被切分为若干分区,每个分区存入数据库节点,每个数原创 2022-06-16 21:28:03 · 121 阅读 · 0 评论 -
一文说透 MySQL JSON 数据类型(收藏)
JSON 数据类型是 MySQL 5.7.8 开始支持的。在此之前,只能通过字符类型(CHAR,VARCHAR 或 TEXT )来保存 JSON 文档。相对字符类型,原生的 JSON 类型具有以下优势:在 JSON 类型引入之前,如果我们想要获取 JSON 文档中的某个元素,必须首先读取整个 JSON 文档,然后在客户端将其转换为 JSON 对象,最后再通过对象获取指定元素的值。下面是 Python 中的获取方式。这种方式有两个弊端:一、消耗磁盘 IO,二、消耗网络带宽,如果 JSON 文档比较大,在原创 2022-06-10 15:04:55 · 1657 阅读 · 1 评论 -
请你简单说一下Mysql的事务隔离级别
Mysql的事务隔离级别它有四种1.读已提交2.可重复读3.串行化4.未提交读这四种隔离级别代表的是说我在不同的那个...就是我多个事务竞争的时候那么我每一个就是我的这个事务并发执行的时候并行执行的时候我对数据的一个影响。比如说我事务之间的一个隔离性,所以通过不同的这种隔离级别它可以去解决所谓的这个幻读或者不可重复读以及说那个读未提交这些问题。然后我记得就是这个最安全的是那种就串行化,串行化就是说它不会存在任何的这个上面幻读不可重复读的一些问题。好的,关于这个问题,我会从几个方面来回答。首先,事务隔离原创 2022-06-10 14:59:58 · 134 阅读 · 0 评论 -
你不得不懂的mysql隔离级别底层
mysql作为最常用的关系型数据库,无论是在应用还是在面试中都是必须掌握的技能。要印在脑子里面的东西DDL:数据定义,它用来定义数据库对象,包括库,表,列,通过ddl我们可以创建,删除,修改数据库和表结构;DML:数据操作语言,增加删除修改数据表中的记录;DCL:数据控制语言,定义访问权限和安全级别;DQL:数据查询语言,用它来查询想要的记录。SQL执行顺序:from;joinonwhere;group by;avg,sum.... 使用聚集函数进行计算;having;select;distinct;ord原创 2022-06-09 15:07:30 · 170 阅读 · 0 评论 -
字节跳动基于 Apache Hudi 的多流拼接实践方案
字节跳动数据湖团队在实时数仓构建宽表的业务场景中,探索实践出的一种基于 Hudi Payload 的合并机制提出的全新解决方案。该方案在存储层提供对多流数据的关联能力,旨在解决实时场景下多流 JOIN 遇到的一系列问题。接下来,本文会详细介绍多流拼接方案的背景以及实践经验。字节跳动存在较多业务场景需要基于具有相同主键的多个数据源实时构建一个大宽表,数据源一般包括 Kafka 中的指标数据,以及 KV 数据库中的维度数据。业务侧通常会基于实时计算引擎在流上做多个数据源的 JOIN 产出这个宽表,但这种解决方案原创 2022-06-09 14:51:31 · 793 阅读 · 0 评论 -
Clickhouse 用户自定义外部函数
· Clickhouse 从 21.11 版本开始,除了提供类似SqlServer、MySQL CREATE FUNCTION 的自定义函数之外,还有一个用户自定义函数(UDF),与其说是“用户自定义函数”,为了避免混淆,称之为”用户自定义外部函数“更为准确。官方对此功能的解释:ClickHouse can call any external executable program or script to process data. 译文:ClickHouse可以调用任何外部可执行程序或脚本来处理数据原创 2022-06-09 14:48:35 · 3626 阅读 · 0 评论 -
以字节跳动内部 Data Catalog 架构升级为例聊业务系统的性能优化
字节跳动 Data Catalog 产品早期,是基于 LinkedIn Wherehows 进行二次改造,产品早期只支持 Hive 一种数据源。后续为了支持业务发展,做了很多修修补补的工作,系统的可维护性和扩展性变得不可忍受。比如为了支持数据血缘能力,引入了字节内部的图数据库 veGraph,写入时,需要业务层处理 MySQL、ElasticSearch 和 veGraph 三种存储,模型也需要同时理解关系型和图两种。更多的背景可以参照之前的文章。新版本保留了原有版本全量的产品能力,将存储层替换成了 Apa原创 2022-06-09 13:50:15 · 290 阅读 · 0 评论 -
如何在MySQL中查找数据
数据库中表的数据被划分为若各个页(page),每个页中又存储了很多行记录,而我们往MySQL中插入的每行记录就放到页当中的行记录中,InnoDB的页分为以下几个部分InnoDB的页被划分为了7个部分,有的部分大小是确定的,有的部分不确定,各个部分说明如下File Header,表⽰页的⼀些通⽤信息,占固定的38字节。Page Header,表⽰数据页专有的⼀些信息,占固定的56个字节。Infimum + Supremum,两个虚拟的伪记录,分别表⽰页中的最⼩和最⼤记录,占固定的26个字节。User Reco原创 2022-06-07 20:46:48 · 1864 阅读 · 0 评论 -
字节跳动数据库的过去、现状与未来
数据库技术一直是信息技术中极其重要的一环,在步入云原生时代后,云基础设施和数据库进一步整合,弥补了传统数据库的痛点,带来了高可扩展性、全面自动化、快速部署、节约成本、管理便捷等优势。从 2018 到 2021 年,伴随业务和数据的迅猛增长,字节跳动的分布式数据库系统取得了令人振奋的发展。如下图所示,在这 4 年间,公司应用侧容器数量从 5 万个增长到了 750 万个,截至目前已经突破 1000 万。这 1000 万个容器筑成了字节跳动坚实的云原生基础设施,支撑着整个业务体系的发展。从在线数据角度看,1000原创 2022-06-06 20:23:51 · 556 阅读 · 0 评论 -
数据库基础之树形查询结构设计
树形数据结构是我们常见的一种数据结构,比如文件目录、公司组织结构等。但是关系型数据库却没有对应的原生数据结构去存储查询这种数据结构,本文介绍了几种实现关系型数据库树形数据存储的方式供大家参考。树形结构是生活中常见的数据结构之一,如公司的组织结构、计算机文件的目录结构和家庭族谱等。本文将以区域作为示例,介绍几种常见的数据库实现树形查询的方式:树形结构的关键属性:深度毗邻目录模式在树形结构数据的每条记录中,记录了指向父数据的记录,如下图所示:数据库中的表结构如下所示:查询情况1:当我们需要查询上海的直接父区域时原创 2022-06-06 17:15:15 · 353 阅读 · 0 评论 -
数据结构—链表
1.链表是什么链表数一种线性数据结构。它是动态地进行储存分配的一种结构。什么是线性结构,什么是非线性结构?线性结构是一个有序数据元素的集合。常用的线性结构有:线性表,栈,队列,双队列,数组,串。非线性结构,是一个结点元素可能有多个直接前趋和多个直接后继。常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等)。2.链表的基本结构链表由一系列节点组成的集合,节点(Node)由数据域(date)和指针域(next)组成。date负责储存数据,next储存其直接后续的地址3.链表的分类单链表(特点:连接原创 2022-06-06 16:49:21 · 2593 阅读 · 0 评论 -
分布式之系统底层原理(下)
共识(Consensus),很多时候会见到与一致性(Consistency)术语放在一起讨论。严谨地讲,两者的含义并不完全相同。一致性的含义比共识宽泛,在不同场景(基于事务的数据库、分布式系统等)下意义不同。具体到分布式系统场景下,一致性指的是多个副本对外呈现的状态。如前面提到的顺序一致性、线性一致性,描述了多节点对数据状态的共同维护能力。而共识,则特指在分布式系统中多个节点之间对某个事情(例如多个事务请求,先执行谁?)达成一致意见的过程。因此,达成某种共识并不意味着就保障了一致性。实践中,要保证系统满足不原创 2022-06-02 20:46:17 · 225 阅读 · 0 评论 -
分布式之系统底层原理(上)
作者:allanpan,腾讯 IEG 高级后台工程师分布式事务是分布式系统必不可少的组成部分,基本上只要实现一个分布式系统就逃不开对分布式事务的支持。本文从分布式事务这个概念切入,尝试对分布式事务以及分布式系统最核心的底层原理逐一进行剖析,内容包括但不限于 BASE 原则、两阶段原子提交协议、三阶段原子提交协议、Paxos/Multi-Paxos 分布式共识算法的原理与证明、Raft 分布式共识算法和分布式事务的并发控制等内容。事务是访问并可能更新各种数据项的一个程序执行单元(unit)。事务由一个或多个步原创 2022-06-02 20:45:19 · 202 阅读 · 0 评论 -
MySQL 总是差八个小时,如何破?
今天来聊一个简单的话题,这是一个小伙伴在微信上问我的,对于初学者我非常能理解这类问题带来的困扰,各种尝试,各种搜索,别人说的头头是道,但是就是解决不了自己的问题,今天我简单从两个方面来和大家聊聊这个问题,如果小伙伴们有其他的解决思路,也可以留言一起分享。这个问题我们可以从两方面来分析:MySQL 本身问题,这个其实很好验证,不就是时间么,我们执行如下 SQL 看看 MySQL 上的时间跟我的电脑时间是否是一致的:可以看到,MySQL 的这个时间跟我系统的时间其实就差了 8 小时,MySQL 本身的时间原创 2022-06-02 19:16:07 · 2588 阅读 · 0 评论 -
数据库资源负载管理(下篇)
openGauss 资源负载管理的核心是资源池,而配置资源池首先要在环境中实现控制组 Cgroups 的设置。更多 Cgroups 的原理介绍,请查看相关操作系统的产品手册。Class 控制组为数据库业务运行所在的顶层控制组,集群部署时会自动生成默认子 Class 控制组 “DefaultClass”。DefaultClass 的 Medium 控制组会含有系统触发的作业在运行,该控制组不允许进行资源修改,且运行在该控制组上的作业不受资源管理的控制,所以推荐创建新的子 Class 及其 Workload 控原创 2022-06-02 19:12:26 · 302 阅读 · 0 评论 -
数据库资源负载管理(上篇)
openGauss 提供了资源负载管理手段,来均衡任务对系统资源的利用。openGauss 对于系统资源的管理范围包含 CPU 资源、内存资源、IO 资源和存储资源。通过对系统的资源进行合理的分配,避免发生资源的不合理占用导致系统运行效率下降或者引发系统运行问题。控制组(Cgroups)是 control groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(如:CPU、内存、IO 等)的机制。如果一个进程加入了某一个控制组,该控制组对 Linux 的系统资源都有严原创 2022-06-02 19:09:46 · 172 阅读 · 0 评论 -
MySQL 默认隔离级别是RR,为什么阿里等大厂会改成RC?
主要是因为MySQL在主从复制的过程是通过bin log 进行数据同步的,而MySQL早期只有statement这种bin log格式,这种格式下,bin log记录的是SQL语句的原文。当出现事务乱序的时候,就会导致备库在 SQL 回放之后,结果和主库内容不一致。为了解决这个问题,MySQL默认采用了Repetable Read这种隔离级别,因为在 RR 中,会在更新数据的时候增加记录锁的同时增加间隙锁。可以避免这种情况的发生。关于MySQL的加锁方式及加锁原则,这里就不再赘述了。这里就不再赘述了。在我知原创 2022-06-02 14:18:53 · 187 阅读 · 0 评论