垂直分表为什么能够加快查询效率?
前言
垂直分表是分库分表中分表操作上一个重要的实现方式,利用垂直分表可以提高数据的处理效率和查询速度,本节主要围绕 垂直分表为什么能够加快查询速度 展开说明,以mysql查询的底层流程为例。
垂直分表是将一张表按列分为多张表,每张表的结构都不相同,多张表通过主键进行关联,从而组成完整的数据。垂直分表可以将热点数据(经常查询、更新频繁的列)分离出来,放在独立的表中
原因(表层)
这里先从表层说一下,垂直分表为什么可以加快操作和查询效率:
- 查询性能提高:垂直分表可以将热点数据(经常查询、更新频繁的列)分离出来,放在独立的表中,这样查询这些数据时就不需要查询整个表,只需要查询较小的数据集,从而提高了查询性能。
- 数据冗余度提高:垂直分表中的数据是按照列进行分离的,这样可以提高数据的冗余度,即重复存储一些数据,以备不时之需。这样即使某个列的数据发生更改,也只需要更新相应的表,不会影响其他表的数据,从而提高了数据的安全性。
- 并发处理能力提高:垂直分表可以将不同的列存储在不同的表或数据库中,这样可以并行处理不同的表或数据库,提高了并发处理能力。
原因(底层)
- 减少I/O操作:MySQL在执行查询时,需要读取表中的数据,而读取磁盘上的数据是需要消耗一定的I/O操作。如果一个表的数据量很大,那么读取整个表的数据就需要花费很长的时间。垂直分表将表按照列进行拆分,将不同的列存储在不同的表中,这样在查询时只需要读取需要的列,从而减少了I/O操作,提高了查询效率。
- 减少锁的开销:在并发处理时,需要对表进行加锁以保护数据的一致性。如果一个表的数据量很大,那么在对这个表进行加锁时就会花费很长的时间,并且也会占用很多的内存。垂直分表将不同的列存储在不同的表中,可以并行处理不同的表,从而减少了锁的开销,提高了并发处理能力。
- 索引的使用:垂直分表将不同的列存储在不同的表中,可以根据列的重要性和使用频率建立相应的索引。对于经常查询的列,可以建立更精细的索引,而对于不经常查询的列,则不需要建立索引。这样可以使索引的使用更加合理,从而提高查询效率。
- 数据量的减少:垂直分表将一张表按照列进行拆分,将不同的列存储在不同的表中,这样每个表的数据量就会减少很多。如果一个表的数据量很大,那么在对这个表进行查询时就会花费很长的时间。而垂直分表将数据分散到多个表中,每个表的数据量减少了很多,从而减少了查询时间。
以下例子按照索引形式说明
数据库表中的数据以页为单位存储在服务器的磁盘中,若不进行垂直分表,在数据量很大的情况下,一页可以存储的行数很少(因为有很多列),每次查询时,按照页将一整页数据加载进内存(一次IO一页),若一页中存储的行数很少,则可能会进行多次IO才能找到目标所在行;而进行垂直分表之后,将热点列单独取出,放到了一张新表中,此时,因为列减少了,每页存储的行数就增加了,所需能找到目标所在行的IO操作次数就减少了。因此,垂直分表可以使数据库的查询操作变快。
相关文章:
垂直分表为什么能够加快查询效率?
前言 垂直分表是分库分表中分表操作上一个重要的实现方式,利用垂直分表可以提高数据的处理效率和查询速度,本节主要围绕 垂直分表为什么能够加快查询速度 展开说明,以mysql查询的底层流程为例。 垂直分表是将一张表按列分为多张表,…...
Linux网络基础知识全面总结
文章目录 linux网络基础知识1.1 IP地址和子网掩码1.2 网关和路由1.3 域名系统 (DNS)1.4 端口和协议 Linux网络配置2.1 ifconfig命令2.2 网络接口配置文件2.3 DHCP自动获取IP地址2.4 静态IP地址配置2.5 网络重启和应用配置3. 网络工具和命令3.1 ping命令3.2 traceroute和mtr命令…...
【arm实验2】按键中断事件控制实验
设置按键中断,按键1按下,LED亮,再次按下,灭 按键2按下,蜂鸣器叫,再次按下,停 按键3按下,风扇转,再次按下,停 主函数: linuxlinux:~/study/08-c$…...
【数据结构-栈 二】【单调栈】每日温度、接雨水
废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【单调栈的应用】,使用【栈】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为&am…...
基于Keil a51汇编 —— 控制语句
ALIGN ALIGN expression ALIGN 语句将位置计数器设置为下一个地址模 2^表达式。 这可用于确保下一条语句在 2^n 边界上对齐。例如,对齐缓存行中的代码或数据。如有必要,汇编程序会创建一个间隙。间隔字节的内容因各个部分而异: 在data中未定…...
单目标优化算法:火鹰优化算法(Fire Hawk Optimizer,FHO)求解23个函数--提供MATLAB代码
一、火鹰优化算法FHO 火鹰优化算法(Fire Hawk Optimizer,FHO)由Mahdi Azizi等人于2022年提出,该算法性能高效,思路新颖。 单目标优化:火鹰优化算法(Fire Hawk Optimizer,FHO&#…...
数据集笔记:分析OpenCellID 不同radio/ create_time update_time可视化
1 读取数据 (以新加坡的cellID为例) import geopandas as gpd import pandas as pdopencellidpd.read_csv(OpenCellID_SG.csv,headerNone,names[radio,mcc,net,area,cell,unit,lon,lat,range,samples,changeable1,created1,updated,AveSignal]) opence…...
【特纳斯电子】血氧饱和度监测仪设计-实物设计
视频及资料链接:血氧饱和度监测仪设计-实物设计 - 电子校园网 编号: T5662203M-SW 设计简介: 本设计是基于STM32的血氧饱和度监测仪系统,主要实现以下功能: 1. STM32单片机作为微处理器 2. MAX30102进行心率血氧检…...
雪花算法生成ID传到前端之后精度丢失问题
第一种:使用注解解决 使用方便简单,粒度高,适用于部分字段需要单独转换的场景,灵活度高 // 两种注解,选其一即可 // JsonFormat(shape JsonFormat.Shape.STRING) JsonSerialize(using ToStringSerializer.class) pri…...
Windows 10 - 适用于各种服务(Redis、MySQL)的文件迁移到其他目录后,导致的各种服务找不到的问题 - 注册服务 - 关闭服务 - 重启服务
目录 一、MySQL 服务找不到问题二、Redis 服务找不到问题Tips 三、PostgreSQL 服务找不到问题参考链接 必须要用管理员打开 doc 窗口,然后才进行以下操作。 通用命令 先关闭 xxx 服务 sc query xxx服务名,如 redis 服务 sc query redis sc query 删除…...
Java 串行接口调用优化
准备面试总结下 1.CompletableFuture static ThreadPoolExecutor poolExecutor new ThreadPoolExecutor(10, 20, 1000L, TimeUnit.MICROSECONDS, new ArrayBlockingQueue<>(100));public static void main(String[] args) throws ExecutionException, InterruptedExcep…...
【Java 进阶篇】JavaScript `typeof` 操作符详解
JavaScript是一种弱类型语言,这意味着变量的数据类型通常是灵活的。为了更好地理解和操作数据,JavaScript提供了typeof操作符,它可以用来确定一个值的数据类型。在本篇博客中,我们将详细讨论typeof操作符,包括它的用法…...
electron之进程间通信
Electron进程间通信 使用electron编写程序时经常遇到下面这种场景: 当用户点击一个按钮时,需要将页面输入的信息保存到本地电脑上; 或者是点击菜单时,需要页面窗口做出响应。 用户点击的按钮和窗口展示的内容是运行在渲染进程中&…...
Linux网络编程:UDP协议和TCP协议
目录 一. 对于端口号的理解 1.1 网络通信五元组 1.2 端口号的划分策略 二. 网络通信中常用的指令 2.1 netstat指令 2.2 pidof指令 三. udp协议 3.1 udp的概念及特点 3.2 udp协议端格式 3.3 对于面向数据报及应用层发送与读取数据的理解 四. tcp协议的概念及特点 五.…...
【SCS-CN】SCS-CN模型中CN值的确定
目录 一、说明二、SWAT三、HEC-HMS四、CN值转换公式五、确定CN25.1 ArcSWAT 2009用户指南5.2 SWAT plus Document5.3 National Engineering Handbook5.4 HEC-HMS水文建模系统原理方法应用5.5 Technical Release 55 (TR-55) 六、确定水文土壤单元(HSG)6.1…...
【C++】继承 ① ( 面向对象特点 | 类之间的关系 | 单继承与多继承 | 继承关系特性 )
文章目录 一、面向对象相关概念1、面向对象特点2、类之间的关系 二、继承概念1、名词说明2、单继承与多继承单继承多继承 3、继承关系特性 一、面向对象相关概念 1、面向对象特点 面向对象的 4 4 4 大特点 : 抽象 : 只关注对象的功能和行为 , 而不过问实现的具体细节 ;封装 :…...
虹科方案 | 虹科ATTO加速虚拟存储管理
虹科方案 | 虹科ATTO加速虚拟存储管理 文章来源:虹科网络安全 点此阅读原文:https://mp.weixin.qq.com/s/SYruurSQSodUvyhZBr-BMQ 1 方案背景 企业越来越多地转向服务器虚拟化,以有效利用硬件资源、降低运营成本,并为维护和灾难恢…...
Docker项目部署lnmp+wordpress
一.项目环境 公司在实际的生产环境中,需要使用Docker 技术在一台主机上创建LNMP服务并运行Wordpress网站平台。然后对此服务进行相关的性能调优和管理工作。 1.1 环境描述 主机 操作系统 IP地址 主要软件 Docker C…...
leetcode 121. 买卖股票的最佳时机、122. 买卖股票的最佳时机 II
121. 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从…...
系统架构设计:5 论软件的可靠性设计
目录 一 可靠性设计 1 可靠性 2 影响可靠性的因素 3可靠性设计技术 (1)避错技术...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
