数据库索引--源自技术

数据库---索引的底层原理 索引的底层原理 MYSQL支持两种索引,B+树索引,哈希表索引; 存储引擎为MYISAM和INNODB的索引结构: MYISAM存储引擎—主键索引(非聚集索引) MYISAM引擎使用B+ 树作为索引结构、叶节点的data域存放的是数据记录地址; MYISAM中,主索引和辅助索引在结构上没有任何区别,只是主索引要求key是唯一的,而辅助索引的key可以重复。 按照B+ 树搜索算法搜索索引,如果指定的key存在,则取出其data域的值,然后以data域的值为地址,读取相应数据记录。 INNoDB存储引擎— 阅读详情

一、引言

对数据库索引的关注从未淡出我的们的讨论,那么数据库索引是什么样的?聚集索引与非聚集索引有什么不同?希望本文对各位同仁有一定的帮助。有不少存疑的地方,诚心希望各位不吝赐教指正,共同进步。[最近首页之争沸沸扬扬,也不知道这个放在这合适么,苦劳?功劳?……]

 

 

二、B-Tree

我们常见的数据库系统,其索引使用的数据结构多是B-Tree或者B+Tree。例如,MsSql使用的是B+Tree,Oracle及Sysbase使用的是B-Tree。所以在最开始,简单地介绍一下B-Tree。

 

B-Tree不同于Binary Tree(二叉树,最多有两个子树),一棵M阶的B-Tree满足以下条件:
1)每个结点至多有M个孩子;
2)除根结点和叶结点外,其它每个结点至少有M/2个孩子;
3)根结点至少有两个孩子(除非该树仅包含一个结点);
4)所有叶结点在同一层,叶结点不包含任何关键字信息;
5)有K个关键字的非叶结点恰好包含K+1个孩子;

另外,对于一个结点,其内部的关键字是从小到大排序的。以下是B-Tree(M=4)的样例:

  

对于每个结点,主要包含一个关键字数组Key[],一个指针数组(指向儿子)Son[]。在B-Tree内,查找的流程是:使用顺序查找(数组长度较短时)或折半查找方法查找Key[]数组,若找到关键字K,则返回该结点的地址及K在Key[]中的位置;否则,可确定K在某个Key[i]和Key[i+1]之间,则从Son[i]所指的子结点继续查找,直到在某结点中查找成功;或直至找到叶结点且叶结点中的查找仍不成功时,查找过程失败。

接着,我们使用以下图片演示如何生成B-Tree(M=4,依次插入1~6):
从图可见,当我们插入关键字4时,由于原结点已经满了,故进行分裂,基本按一半的原则进行分裂,然后取出中间的关键字2,升级(这里是成为根结点)。其它的依类推,就是这样一个大概的过程。

  

 

三、数据库索引

1.什么是索引

在数据库中,索引的含义与日常意义上的“索引”一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象。
A)索引可以避免全表扫描。多数查询可以仅扫描少量索引页及数据页,而不是遍历所有数据页。
B)对于非聚集索引,有些查询甚至可以不访问数据页。
C)聚集索引可以避免数据插入操作集中于表的最后一个数据页。
D)一些情况下,索引还可用于避免排序操作。

 

当然,众所周知,虽然索引可以提高查询速度,但是它们也会导致数据库系统更新数据的性能下降,因为大部分数据更新需要同时更新索引。

 

 

2.索引的存储

一条索引记录中包含的基本信息包括:键值(即你定义索引时指定的所有字段的值)+逻辑指针(指向数据页或者另一索引页)。

  

当你为一张空表创建索引时,数据库系统将为你分配一个索引页,该索引页在你插入数据前一直是空的。此页此时既是根结点,也是叶结点。每当你往表中插入一行数据,数据库系统即向此根结点中插入一行索引记录。当根结点满时,数据库系统大抵按以下步骤进行分裂:
A)创建两个儿子结点
B)将原根结点中的数据近似地拆成两半,分别写入新的两个儿子结点
C)根结点中加上指向两个儿子结点的指针

 

通常状况下,由于索引记录仅包含索引字段值(以及4-9字节的指针),索引实体比真实的数据行要小许多,索引页相较数据页来说要密集许多。一个索引页可以存储数量更多的索引记录,这意味着在索引中查找时在I/O上占很大的优势,理解这一点有助于从本质上了解使用索引的优势。

 

 

3.索引的类型

A)聚集索引,表数据按照索引的顺序来存储的。对于聚集索引,叶子结点即存储了真实的数据行,不再有另外单独的数据页。
B)非聚集索引,表数据存储顺序与索引顺序无关。对于非聚集索引,叶结点包含索引字段值及指向数据页数据行的逻辑指针,该层紧邻数据页,其行数量与数据表行数据量一致。

 

在一张表上只能创建一个聚集索引,因为真实数据的物理顺序只可能是一种。如果一张表没有聚集索引,那么它被称为“堆集”(Heap)。这样的表中的数据行没有特定的顺序,所有的新行将被添加的表的末尾位置。

 

 

4.聚集索引

在聚集索引中,叶结点也即数据结点,所有数据行的存储顺序与索引的存储顺序一致。

  

1)聚集索引与查询操作

如上图,我们在名字字段上建立聚集索引,当需要在根据此字段查找特定的记录时,数据库系统会根据特定的系统表查找的此索引的根,然后根据指针查找下一个,直到找到。例如我们要查询“Green”,由于它介于[Bennet,Karsen],据此我们找到了索引页1007,在该页中“Green”介于[Greane, Hunter]间,据此我们找到叶结点1133(也即数据结点),并最终在此页中找以了目标数据行。

 

此次查询的IO包括3个索引页的查询(其中最后一次实际上是在数据页中查询)。这里的查找可能是从磁盘读取(Physical Read)或是从缓存中读取(Logical Read),如果此表访问频率较高,那么索引树中较高层的索引很可能在缓存中被找到。所以真正的IO可能小于上面的情况。

 

 

2)聚集索引与插入操作

最简单的情况下,插入操作根据索引找到对应的数据页,然后通过挪动已有的记录为新数据腾出空间,最后插入数据。

 

如果数据页已满,则需要拆分数据页(页拆分是一种耗费资源的操作,一般数据库系统中会有相应的机制要尽量减少页拆分的次数,通常是通过为每页预留空间来实现):
A)在该使用的数据段(extent)上分配新的数据页,如果数据段已满,则需要分配新段。
B)调整索引指针,这需要将相应的索引页读入内存并加锁。
C)大约有一半的数据行被归入新的数据页中。
D)如果表还有非聚集索引,则需要更新这些索引指向新的数据页。

 

特殊情况:
A)如果新插入的一条记录包含很大的数据,可能会分配两个新数据页,其中之一用来存储新记录,另一存储从原页中拆分出来的数据。
B)通常数据库系统中会将重复的数据记录存储于相同的页中。
C)类似于自增列为聚集索引的,数据库系统可能并不拆分数据页,页只是简单的新添数据页。

 

 

3)聚集索引与删除操作

删除行将导致其下方的数据行向上移动以填充删除记录造成的空白。

如果删除的行是该数据页中的最后一行,那么该数据页将被回收,相应的索引页中的记录将被删除。如果回收的数据页位于跟该表的其它数据页相同的段上,那么它可能在随后的时间内被利用。如果该数据页是该段的唯一一个数据页,则该段也被回收。

 

对于数据的删除操作,可能导致索引页中仅有一条记录,这时,该记录可能会被移至邻近的索引页中,原索引页将被回收,即所谓的“索引合并”。

 

 

5.非聚集索引

非聚集索引与聚集索引相比:
A)叶子结点并非数据结点
B)叶子结点为每一真正的数据行存储一个“键-指针”对
C)叶子结点中还存储了一个指针偏移量,根据页指针及指针偏移量可以定位到具体的数据行。
D)类似的,在除叶结点外的其它索引结点,存储的也是类似的内容,只不过它是指向下一级的索引页的。

 

聚集索引是一种稀疏索引,数据页上一级的索引页存储的是页指针,而不是行指针。而对于非聚集索引,则是密集索引,在数据页的上一级索引页它为每一个数据行存储一条索引记录。

 

对于根与中间级的索引记录,它的结构包括:
A)索引字段值
B)RowId(即对应数据页的页指针+指针偏移量)。在高层的索引页中包含RowId是为了当索引允许重复值时,当更改数据时精确定位数据行。
C)下一级索引页的指针

 

对于叶子层的索引对象,它的结构包括:
A)索引字段值
B)RowId

  

1)非聚集索引与查询操作

针对上图,如果我们同样查找“Green”,那么一次查询操作将包含以下IO:3个索引页的读取+1个数据页的读取。同样,由于缓存的关系,真实的IO实际可能要小于上面列出的。

 

 

2)非聚集索引与插入操作

如果一张表包含一个非聚集索引但没有聚集索引,则新的数据将被插入到最末一个数据页中,然后非聚集索引将被更新。如果也包含聚集索引,该聚集索引将被用于查找新行将要处于什么位置,随后,聚集索引、以及非聚集索引将被更新。

 

 

3)非聚集索引与删除操作

如果在删除命令的Where子句中包含的列上,建有非聚集索引,那么该非聚集索引将被用于查找数据行的位置,数据删除之后,位于索引叶子上的对应记录也将被删除。如果该表上有其它非聚集索引,则它们叶子结点上的相应数据也要删除。

 

如果删除的数据是该数所页中的唯一一条,则该页也被回收,同时需要更新各个索引树上的指针。

 

由于没有自动的合并功能,如果应用程序中有频繁的随机删除操作,最后可能导致表包含多个数据页,但每个页中只有少量数据。

 

 

6.索引覆盖

索引覆盖是这样一种索引策略:当某一查询中包含的所需字段皆包含于一个索引中,此时索引将大大提高查询性能。

 

包含多个字段的索引,称为复合索引。索引最多可以包含31个字段,索引记录最大长度为600B。如果你在若干个字段上创建了一个复合的非聚集索引,且你的查询中所需Select字段及Where,Order By,Group By,Having子句中所涉及的字段都包含在索引中,则只搜索索引页即可满足查询,而不需要访问数据页。由于非聚集索引的叶结点包含所有数据行中的索引列值,使用这些结点即可返回真正的数据,这种情况称之为“索引覆盖”。

 

在索引覆盖的情况下,包含两种索引扫描:
A)匹配索引扫描
B)非匹配索引扫描

 

 

1)匹配索引扫描

此类索引扫描可以让我们省去访问数据页的步骤,当查询仅返回一行数据时,性能提高是有限的,但在范围查询的情况下,性能提高将随结果集数量的增长而增长。

 

针对此类扫描,索引必须包含查询中涉及的的所有字段,另外,还需要满足:Where子句中包含索引中的“引导列”(Leading Column),例如一个复合索引包含A,B,C,D四列,则A为“引导列”。如果Where子句中所包含列是BCD或者BD等情况,则只能使用非匹配索引扫描。

 

 

2)非配置索引扫描

正如上述,如果Where子句中不包含索引的导引列,那么将使用非配置索引扫描。这最终导致扫描索引树上的所有叶子结点,当然,它的性能通常仍强于扫描所有的数据页。

 

 

[参考]
[1]http://manuals.sybase.com/onlinebooks/group-asarc/asg1200e/aseperf/@Generic__BookTextView/3358
[2] http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.adref.doc/adref235.htm

向量数据库选型:Pinecone vs Milvus vs Weaviate 向量嵌入是将非结构化数据(如文本、图像、音频等)转换为高维数值向量的过程。这些向量通常由预训练的机器学习模型生成,能够捕获数据的语义信息。vv1v2vd∈Rdvv1​v2​...vd​∈Rd其中ddd是向量的维度,通常从几十维到几千维不等。Pinecone成立于2019年,总部位于美国旧金山。公司的创始人Edo Liberty曾在亚马逊和微软担任要职,在数据库和分布式系统领域拥有丰富的经验。 阅读详情

相关推荐

Zemax实现微透镜阵列光束整形(原理+仿真)

通过Zemax实现微透镜阵列的光场整形仿真。

VJCP_90909Bu0的博客 1万+

详解MySQL索引与底层原理

从数据页到缓冲池再到索引的B+树,解析聚簇索引与非聚簇索引的优劣以及为什么不采取其它数据结构。最后,认识explain在分析索引有效性时的用处。

geek! 3748

【学习记录】IIC驱动ICM42670+卡尔曼滤波+四元数姿态角解算

ICM42670陀螺仪可以使用iic驱动,单片机平台使用GD32f305VE。

liarsup的博客 8270

谈谈索引的底层原理

都知道数据库建立索引可以在一定程度上提高查询效率。 但是为什么呢?很多人并不知情。 索引使用原则网络上那么多条,如果要靠死记硬背,太生范,进而导致我们在使用的时候会感觉艰难,其实可以从底层原理上去理解这些规则。 首先我们要知道,查询是信息的获取。在获取信息的时候,我们有时候可以很容易获得,有时候却很难。比如,你想要知道一条绝密的信息,如果光是凭借你自己去寻找答案,可能会找到,但是需要花费你巨...

超域的博客 2072

Python与ArcGIS系列(二)获取地图文档

在ArcPy中,要引用当前的地图文档(Map Document),可以使用 mapping 模块中的 MapDocument 类。值得注意的是,在arcgis内部python窗口运行该代码才能访问已加载进arcgis的文档,如果通过其他idle则无法访问。要引用磁盘上的地图文档并对其进行一些设置,同样可以使用ArcPy中的 mapping 模块和 MapDocument 类。对于我们平常的工作,接触最多的就是图层数据处理,获取图层后就可以方便地进行下一步处理。

weixin_43894929的博客 2200

Python 爬虫实战:拼多多商品评论情感分析(含词云生成与差评预警)

在电商行业竞争日益激烈的当下,商家对商品评论的分析需求愈发迫切。通过 Python 爬虫收集拼多多商品评论,并结合情感分析、词云可视化及差评预警技术,商家可精准洞察消费者反馈,优化商品与服务。本文将深度剖析从爬虫搭建到数据挖掘的关键环节,助力读者构建全流程电商评论分析系统。

yansideyucsdn的博客 1451

漫谈数据库索引

一、引言 对数据库索引的关注从未淡出我的们的讨论,那么数据库索引是什么样的?聚集索引与非聚集索引有什么不同?希望本文对各位同仁有一定的帮助。有不少存疑的地方,诚心希望各位不吝赐教指正,共同进步。[最近首页之争沸沸扬扬,也不知道这个放在这合适么,苦劳?功劳?……] 二、B-Tree 我们常见的数据库系统,其索引使用的数据结构多是B-Tree或者B+Tree。例如,MsSq...

qinshuanghong的博客 539

Matlab仿真:均匀面阵方向图、均匀线阵方向图、均匀圆阵方向图

其中,阵列方向图是评价阵列性能的重要参数之一。均匀面阵由若干个相同的阵元构成,阵元间等距排列,阵元的方向图形状为一个圆盘。均匀线阵由若干个相同的阵元构成,阵元间等距排列,阵元的方向图形状为一个矩形。本文将采用Matlab进行仿真,分别实现均匀面阵方向图、均匀线阵方向图和均匀圆阵方向图,并对三种阵列进行比较分析。通过以上代码仿真,我们可以对均匀面阵、均匀线阵和均匀圆阵进行方向图的绘制,进一步分析不同阵列在天线性能方面的差异。Matlab仿真:均匀面阵方向图、均匀线阵方向图、均匀圆阵方向图。

2301_79326857的博客 3439

Mysql索引底层原理及其优化方案

使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈在 select 语句之前增加 explain 关键字 ,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中。

nickel369的博客 1764

webrtc进阶-- FlexFEC 实现原理与调试分析(m80 代码对齐版)

WebRTC 中 FlexFEC 技术解析与调试指南 摘要:本文深入分析 WebRTC 的 FlexFEC(灵活前向纠错)技术实现原理,重点探讨其在 m80 版本中的协商机制、接收侧恢复流程以及 SFU 场景下的特殊处理。文章指出 FlexFEC 通过动态冗余策略提升弱网抗丢包能力,详细解析了编解码器分配、SSRC 映射、包恢复等关键环节,并提供了针对 XR+SFU 场景的调试建议。调试时可重点关注 FEC 包接收与媒体包恢复日志,以验证链路有效性。

HOSTEN的博客 49

机器人环境仿真软件:Gazebo_(6).传感器仿真

通过 Gazebo 和 ROS,我们可以方便地配置和使用多种传感器,进行机器人环境的仿真和调试。传感器仿真不仅帮助我们验证和测试机器人的感知能力,还可以在真实部署前发现和解决潜在的问题。本节详细介绍了如何在 Gazebo 中配置激光雷达、摄像头、IMU、声纳和 GPS 传感器,并展示了如何在 ROS 中接收和处理这些传感器数据。此外,还介绍了多传感器融合的基本方法和调试工具,希望这些内容能对你的机器人仿真工作有所帮助。

kkchenjj的博客 1390

SQL Server 2025 中的改进

19437: 无法为可用性副本‘%.*ls’将READ_ONLY_ROUTING_URL设置为NONE,因为它正在副本‘%.*ls’的READ_ONLY_ROUTING_LIST中使用。请从READ_ONLY_ROUTING_LIST中删除该副本并重试。3614: 批处理统计信息:总持续时间=%f毫秒,CPU时间=%f毫秒,总逻辑读=%lu,物理读=%lu,远程读=%lu,逻辑写=%lu,编译CPU时间=%f毫秒,登录时间=%lu毫秒,总等待=%f毫秒,日志字节数=%I64u,SQL句柄=%hs。

weixin_42151373的博客 140

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

fastindex:加速网站索引,优化谷歌搜索排名

fastindex:加速网站索引,优化谷歌搜索排名 项目介绍 在网站优化和搜索引擎排名中,索引速度至关重要。fastindex 是一个开源的自托管工具,旨在帮助网站更快地被谷歌搜索索引,提高搜索排名。它是 TagParrot、Omega Indexer 和 URLMonitor 等工具的替代品,通过直接推送页面到谷歌爬虫,加快索引速度。 项目技术分析 fastindex 利用谷歌的 Search ...

gitblog_00675的博客 1101

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

mysql索引

因为一次面试,面试官问了一个联合索引,突然激起了我学习mysql索引的激情,以前是觉得功能能实现就完事了没有考虑过内部mysql的运行机制和原理,今天继续加油! 学一样技术总得问一下自己几个问题: 为什么会出现这种技术? 他的作用是什么?有没有替代品? 优缺点是什么? 怎么学习他使用它? 思考使用场景! https://www.cnblogs.com/whgk/p/6179612...

dj1540225203的博客 104

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Mem0 双语言 SDK 对照指南:Python 与 TypeScript 客户端 API 差异速查与迁移实践

> 本文档的正文主体基于 [differences.md](https://link.gitcode.com/i/65659133d3627f480dad4d7d6c4d75c9),并辅以 [python.md](https://link.gitcode.com/i/9ef27e7e6f0453a46263be4b1ed3c6c9) / [node.md](https://link.gitcode

gitblog_00387的博客 763

Linkding核心原理:极简设计如何实现毫秒级书签搜索

你是否经历过这样的挫败?当需要查找数月前保存的技术文章时,书签管理器却需要加载数秒甚至卡顿崩溃。在信息爆炸的时代,我们每天积累的网页链接正以指数级增长,传统书签工具的性能瓶颈已成为知识管理的隐形障碍。Linkding作为一款开源自托管书签管理器,通过极简设计理念,在保持功能完整的同时实现了毫秒级搜索响应——即使在十万级书签数据量下,搜索延迟仍能稳定控制在100ms以内。本文将深入剖析其架构设计与技...

gitblog_01075的博客 792

终极指南:Go语言高级编程中的10个数据库索引优化技巧,快速提升查询性能

在Go语言开发中,数据库查询性能往往是系统瓶颈的关键因素。《Go语言高级编程》开源图书(涵盖CGO、Go汇编语言、RPC实现等高级主题)中强调,关系型数据库基于B+树实现的索引设计直接影响系统响应速度。本文将结合书中实战经验,分享10个经过验证的数据库索引优化技巧,帮助开发者彻底解决查询性能问题。 ## 1. 避免"隐形"查询放大:ORM使用的致命陷阱 ORM框架虽然简化了数据操作,但容易导致

gitblog_00114的博客 457

NoisePage未来路线图:自驱动数据库技术的发展趋势与展望

NoisePage是由卡内基梅隆大学数据库小组开发的关系型数据库管理系统,其核心研究目标是构建支持自主运行和优化的高性能系统组件。作为自驱动数据库技术的先锋,NoisePage正在重新定义数据库管理的未来,让数据库具备自我监控、自我调整和自我优化的能力。 ## 自驱动数据库:数据库技术的下一个里程碑 🚀 自驱动数据库(Self-Driving Database)是数据库领域的前沿概念,它通过

gitblog_00139的博客 454

读取多nii图_Titan/JanusGraph图数据库实战总结与深入分析

历史背景JanusGraph图数据库,源自于TitanDB开源图数据库。TitanDB在2012年发布第一个版本,2015年被Datastax公司收购,后续不再维护导致项目停滞。图数据库有2个最具代表性的查询语言:Cypher 及 Gremlin。Cypher是商业公司Neo4j出品,Neo4j图数据库在2007年发布了第一个版本,是商用图数据库领域的开拓者。Gremlin是Apache...

weixin_33603551的博客 243

Succinct Range Filter (SuRF):高效数据过滤的利器

Succinct Range Filter (SuRF):高效数据过滤的利器 项目介绍 Succinct Range Filter (SuRF) 是一个快速且紧凑的过滤器,专为精确匹配过滤、范围过滤和近似范围计数而设计。该项目源自卡内基梅隆大学的一项研究,并荣获SIGMOD最佳论文奖。SuRF不仅在学术界引起了广泛关注,还在实际应用中展现了其强大的性能。通过SuRF,用户可以在大规模数据集上实现高...

gitblog_00212的博客 544

2026年Java还会有金三银四吗?

谈到Java面试,相信大家第一时间脑子里想到的词肯定是金三银四,金九银十。好像大家的潜意识里做Java开发的都得在这个时候才能出去面试,跳槽成功率才高!但LZ不这么认为,LZ觉得我们做技术的一生中会遇到很多大大小小的面试,金三银四(金九银十)只是机会比平时多一些,但也未必每个人都能在这个时间段找到自己理想的岗位。我们能做的就是时刻准备着,当机会来临的时候能把握住就行。

Javatutouhouduan的博客 355

Shipit-engine性能优化:处理大规模部署的5个关键策略

Shipit-engine是一款强大的部署协调工具,能够帮助开发团队高效管理GitHub仓库的部署流程。当面对大规模部署需求时,性能优化成为确保系统稳定运行的关键。本文将分享5个实用策略,帮助你提升Shipit-engine在处理大规模部署时的效率和可靠性。 ## 1. 优化数据库索引设计 数据库性能是大规模部署的核心瓶颈之一。Shipit-engine通过精心设计的索引策略显著提升查询效率。

gitblog_00633的博客 411

金三银四已失效,Java程序员请早点认清现实!

谈到Java面试,相信大家第一时间脑子里想到的词肯定是金三银四,金九银十。好像大家的潜意识里做Java开发的都得在这个时候才能出去面试,跳槽成功率才高!但LZ不这么认为,LZ觉得我们做技术的一生中会遇到很多大大小小的面试,金三银四(金九银十)只是机会比平时多一些,但也未必每个人都能在这个时间段找到自己理想的岗位。我们能做的就是时刻准备着,当机会来临的时候能把握住就行。

Javatutouhouduan的博客 167

今年Java金三银四已经结束了吗?

谈到Java面试,相信大家第一时间脑子里想到的词肯定是金三银四,金九银十。好像大家的潜意识里做Java开发的都得在这个时候才能出去面试,跳槽成功率才高!但LZ不这么认为,LZ觉得我们做技术的一生中会遇到很多大大小小的面试,金三银四(金九银十)只是机会比平时多一些,但也未必每个人都能在这个时间段找到自己理想的岗位。我们能做的就是时刻准备着,当机会来临的时候能把握住就行。

weixin_50205273的博客 479

DeepSeek总结的DuckDB internals 的 设计与实现 (DiDi)

一门关于 DuckDB 关系数据库引擎中精选实现技术的课程。

l1t的专栏 569
上一篇: MySql集群知识与搭建--源自技术
MyJava_Dx
博客等级 码龄11年 1粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值