数据库存储
RAID
- DSL : Domain Spesic Language 专用领域语言
单机存储
- 一切皆Key-Value
本地文件系统
- 一切皆文件
Ceph - 分布式存储
关系型数据库通用组件
- Query Engine :解析query,生成查询计划
- Txn Manager :事务并发管理
- Lock Manager :锁相关的策略
- Storage Manager :组织内存 / 磁盘数据结构
- Replication :主从同步
- 内存结构: B-Tree 、B±Tree 、LRU List
- 磁盘数据结构:WriteAheadLog(ReadLog)、Page
分布式存储之容量问题
分布式存储之弹性问题
- 性价比优化:
SQL
一条SQL的一生:
- 查询解析 : 将文本解析成结构化数据,即AST
- 查询优化: 优化器,根据AST生成最优的执行计划
- 查询执行
- 事务引擎:处理事务ACID
- 存储引擎:内存中的数据缓存文件、日志文件等
SQL引擎 – 规则引擎
词法分析 -> 语法分析 -> 语义分析
Optimizer
条件化简 & 表连接优化 & Scan优化
代价优化
火山引擎
梯次链式调用:解耦
一层一层的解析计数,计数返回递归返回
每个算子独立计算,相互之间没有耦合,逻辑结构简单
每一条数据要调用多个函数,CPU开销很大
-
把Row优化成Batch, 批量计算
-
把执行函数封装到一个函数里面
InnoDB
-
mysql中每个chunk的大小一般为128M,每个block对应一个page,一个chunk下面有8192个block
-
避免内存碎片化
-
分成多个instance,可以有效避免并发冲突
-
hash:
page id % instance num 得到它属于哪个instance
-
通过page id 去找 block
LRU算法:把最近最常用的数据保留下来
-
缺陷:
扫描100G的表,而我们的buffer pool只有1G,因为扫描全表的数据量大,需要淘汰的缓存页多,导致在淘汰过程中,很有可能把需要的缓存页给淘汰了,新数据是低频的 -
解决:
冷热分离
- LRU链表分为两部分,一部分冷数据(刚从磁盘读进来的数据),一部分热数据(经常访问的数据)。
- 从磁盘读取的数据先放到冷数据表的头部,如果它1s后被访问,此页数据移动到热数据表的头部;否则不动
- 淘汰时,先淘汰冷数据区
Page
- 一个page大概16Kb左右
B+树索引
数据库的回滚 - Undo
-
undo是逻辑日志,记录的是数据的增量变化,保证事务的原子性和事务并发控制。
- 可以适用于多版本控制MVCC,解决读写冲突和一致性的问题
-
MVCC的作用:
- 读写互不阻塞
- 降低死锁概率
- 实现一致性读
-
Undo Log 在MVCC的作用
- 每个事务有一个单增的事务ID
- DB_ROLL_PTR 将数据行的所有快照记录通过链表的结构串联起来
Sharding - 分库分表
- 解决大流量问题
- 业务层进行水平拆分(Hash拆分)
流量突增 - 扩容
流量突增 - 代理池
- 连接太多了,Proxy就相当于连接的缓存
高可用 & 稳定性
- Binlog :是mysql用来记录数据结构变更以及表数据修改的二进制日志,只会记录了表的变更操作,但是不会记录select和show这种查询操作
- 数据恢复: 误删数据之后可以勇敢binilog来恢复数据
- 主从复制:主库把binlog传给从库,读取binlog然后写数据,就能保证数据一致性
- 审计:对二进制日志进行分析,判断是否对数据库进行注入功击
列式存储
数据存储要考虑一下问题:
并发处理
建立索引表
行存、列存、行列混合
数据查询:
读多写少
读少写多
分析型查询
点查模式
数据压缩
LZ4: 压缩重复项
- 向前5个,重复4项
Run-length encoding:
- 重复数据直接压缩
差值encoding:
延迟物化
将列数据转换为可以被计算或者输出的行数据或者内存数据结果的过程,物化后的数据通常可以被用来做数据过滤
- 推迟物化的发生
- 直接在压缩列上做计算
向量化
SIMD:现代化多核CPU,一条指令执行多条数据(批处理)
用SIMD指令完成的代码设计和执行的逻辑就叫做向量化
索引表
- B tree :数据写入有序,叶子左小右大
- B + tree: 叶子节点索引维护,key二分查找
- LSM-tree: Log structrual tree 大吞吐量写入场景的数据结构
SSTable
- key顺序存储,成为segment
- 单表多个segement
- segemnt写入磁盘不可更改,新加的数据只能生成新segement
Mentable
- 在内存中的数据保存在memtable中,大多数实现都是一颗Binary search tree
- 当memtable存储的数据到达一定的阈值的时候,就会按顺序写入到磁盘
相关文章:
数据库存储
RAID DSL : Domain Spesic Language 专用领域语言 单机存储 一切皆Key-Value 本地文件系统 一切皆文件 Ceph - 分布式存储 关系型数据库通用组件 Query Engine :解析query,生成查询计划Txn Manager :事务并发管理Lock Man…...
hive学习笔记
一、Hive基本概念1.1 hive是什么hive是基于hadoop的一个数仓分析工具,hive可以将hdfs上存储的结构化的数据,映射成一张表,然后让用户写HQL(类SQL)来分析数据tel up down 1383838438 1345 1567 138383…...
7大体系防作弊,牛客放大招了!严肃笔试客户端上线!
如果问起学生对在线笔试的印象,“不公平”和“不服气”占了半壁江山。学生认为很多企业的在线笔试系统并不完善。原因一,不能有效地规避部分学生的作弊行为;原因二,在线考试系统不稳定,bug频出,导致笔试发挥…...
R语言广义可加模型在空气环境污染方面的应用(1)
粉丝私信我希望复制一篇文章的图片,图片来源于文章:Wu C, Yan Y, Chen X, Gong J, Guo Y, Zhao Y, Yang N, Dai J, Zhang F, Xiang H. Short-term exposure to ambient air pollution and type 2 diabetes mortality: A population-based time series st…...
CSDN 编程竞赛二十九期题解
竞赛总览 CSDN 编程竞赛二十九期:比赛详情 (csdn.net) 竞赛题解 题目1、订班服 小A班级订班服了!可是小A是个小糊涂鬼,整错了好多人的衣服的大小。小A只能自己掏钱包来补钱了。小A想知道自己至少需要买多少件衣服。 #include <cstdio…...
基于STM32采用CS创世 SD NAND(贴片SD卡)完成FATFS文件系统移植与测试
一、前言 在STM32项目开发中,经常会用到存储芯片存储数据。 比如:关机时保存机器运行过程中的状态数据,上电再从存储芯片里读取数据恢复;在存储芯片里也会存放很多资源文件。比如,开机音乐,界面上的菜单图…...
K_A12_007 基于STM32等单片机驱动AS608光学指纹识别模块 OLED0.96显示
K_A12_007 基于STM32等单片机驱动AS608光学指纹识别模块 OLED0.96显示一、资源说明二、基本参数参数引脚说明三、驱动说明对应程序:四、部分代码说明1、接线引脚定义1.1、STC89C52RCAS608光学指纹模块1.2、STM32F103C8T6AS608光学指纹模块五、基础知识学习与相关资料下载六、视…...
map和set介绍及其底层模拟实现
致努力前行的人: 要努力,但不要着急,繁花锦簇,硕果累累都需要过程! 目录 1.关联式容器 2.键值对 3.树形结构的关联式容器 3.1set的介绍 3.2set的使用 3.3multiset的使用 3.4map的使用 3.5multimap的使用 4.常见的面试题…...
实现一个比ant功能更丰富的Modal组件
普通的modal组件如下: 我们写的modal额外支持,后面没有蒙版,并且Modal框能够拖拽 还支持渲染在文档流里,上面的都是fixed布局,我们这个正常渲染到文档下面: render部分 <RenderDialog{...restState}visi…...
2023美赛F题思路数据代码分享
文章目录赛题思路2023年美国大学生数学建模竞赛选题&论文一、关于选题二、关于论文格式三、关于论文提交四、论文提交流程注意不要手滑美赛F题思路数据代码【最新】赛题思路 (赛题出来以后第一时间在CSDN分享) 最新进度在文章最下方卡片,加入获取一手资源 202…...
Flutter如何与Native(Android)进行交互
前言 上一篇文章《Flutter混合开发:Android中如何启动Flutter》中我们介绍了如何在Native(Android项目)中启动Flutter,展示Flutter页面。但是在开发过程中,很多时候并不是简单的展示一个页面即可,还会涉及…...
数据库主从复制和读写分离
主从数据库和数据库集群的一些问题 数据库集群和主从数据库最本质的区别,其实也就是data-sharing和nothing-sharing的区别。集群是共享存储的。主从复制中没有任何共享。每台机器都是独立且完整的系统。 什么是主从复制? 主从复制,是用来建立一个和主数…...
Java并发编程面试题——线程安全(原子性、可见性、有序性)
文章目录一、原子性高频问题1.1 Java中如何实现线程安全?1.2 CAS底层实现1.3 CAS的常见问题1.4 四种引用类型 ThreadLocal的问题?二、可见性高频问题2.1 Java的内存模型2.2 保证可见性的方式2.3 volatile修饰引用数据类型2.4 有了MESI协议,为啥还有vol…...
DialogFragment内存泄露问题能不能一次性改好
孽缘 自DialogFragment在Android3.0之后作为一种特殊的Fragment引入,官方建议使用DialogFragment代替Dialog或者AllertDialog来实现弹框的功能,因为它可以更好的管理Dialog的生命周期以及可以更好复用。 然而建议虽好,实用须谨慎,…...
java学习--多线程
多线程 了解多线程 多线程是指从软件或者硬件上实现多个线程并发执行的技术。 具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,提升性能。 并发和并行 并行:在同一时刻,有多个指令在CPU上同时执行并发࿱…...
90后阿里P7技术专家晒出工资单:狠补了这个,真香...
最近一哥们跟我聊天装逼,说他最近从阿里跳槽了,我问他跳出来拿了多少?哥们表示很得意,说跳槽到新公司一个月后发了工资,月入5万多,表示很满足!这样的高薪资着实让人羡慕,我猜这是税后…...
2023美赛C题:Wordle筛选算法
Wordle 规则介绍 Wordle 每天会更新一个5个字母的单词,在6次尝试中猜出单词就算成功。每个猜测必须是一个有效的单词(不能是不能组成单词的字母排列)。 每次猜测后,字母块的颜色会改变,颜色含义如下: 程…...
SpringBoot 集成 Kafka
SpringBoot 集成 Kafka1 安装 Kafka2 创建 Topic3 Java 创建 Topic4 SpringBoot 项目4.1 pom.xml4.2 application.yml4.3 KafkaApplication.java4.4 CustomizePartitioner.java4.5 KafkaInitialConfig.java4.6 SendMessageController.java5 测试1 安装 Kafka Docker 安装 Kafk…...
OpenCV 图像金字塔算子
本文是OpenCV图像视觉入门之路的第14篇文章,本文详细的介绍了图像金字塔算子的各种操作,例如:高斯金字塔算子 、拉普拉斯金字塔算子等操作。 高斯金字塔中的较高级别(低分辨率)是通过先用高斯核对图像进行卷积再删除偶…...
【自学Linux】Linux一切皆文件
Linux一切皆文件 Linux一切皆文件教程 Linux 中所有内容都是以文件的形式保存和管理的,即一切皆文件,普通文件是文件,目录是文件,硬件设备(键盘、监视器、硬盘、打印机)是文件,就连套接字&…...
CUDA C++扩展的详细描述
CUDA C扩展的详细描述 文章目录CUDA C扩展的详细描述CUDA函数执行空间说明符B.1.1 \_\_global\_\_B.1.2 \_\_device\_\_B.1.3 \_\_host\_\_B.1.4 Undefined behaviorB.1.5 __noinline__ and __forceinline__B.2 Variable Memory Space SpecifiersB.2.1 \_\_device\_\_B.2.2. \_…...
为什么重写equals必须重写hashCode
关于这个问题,看了网上很多答案,感觉都参差不齐,没有答到要点,这次就记录一下! 首先我们为什么要重写equals?这个方法是用来干嘛的? public boolean equals (Object object&#x…...
< 每日小技巧:N个很棒的 Vue 开发技巧, 持续记录ing >
每日小技巧:6 个很棒的 Vue 开发技巧👉 ① Watch 妙用> watch的高级使用> 一个监听器触发多个方法> watch 监听多个变量👉 ② 自定义事件 $emit() 和 事件参数 $event👉 ③ 监听组件生命周期常规写法hook写法ὄ…...
数据结构与算法之二分查找分而治之思想
决定我们成为什么样人的,不是我们的能力,而是我们的选择。——《哈利波特与密室》二分查找是查找算法里面是很优秀的一个算法,特别是在有序的数组中,这种算法思想体现的淋漓尽致。一.题目描述及其要求请实现无重复数字的升序数组的…...
训练自己的中文word2vec(词向量)--skip-gram方法
训练自己的中文word2vec(词向量)–skip-gram方法 什么是词向量 将单词映射/嵌入(Embedding)到一个新的空间,形成词向量,以此来表示词的语义信息,在这个新的空间中,语义相同的单…...
ubuntu系统环境配置和常用软件安装
系统环境 修改文件夹名称为英文 参考链接 export LANGen_US xdg-user-dirs-gtk-update 常用软件安装 常用工具 ping 和ifconfig工具 sudo apt install -y net-tools inetutils-ping 截图软件 sudo apt install -y net-tools inetutils-ping flameshot 录屏 sudo apt-get i…...
【1139. 最大的以 1 为边界的正方形】
来源:力扣(LeetCode) 描述: 给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量。如果不存在,则返回 0。 示例 1&#…...
windows11安装sqlserver2022报错
window11安装SQL Server 2022 报错 糟糕… 无法安装SQL Server (setup.exe)。此 SQL Server安装程序介质不支持此OS的语言,或没有SQL Server英语版本的安装文件。请使用匹配的特定语言SQL Server介质;或安装两个特定语言MUI,然后通过控制面板的区域设置…...
Python快速上手系列--日志模块--详解篇
前言本篇主要说说日志模块,在写自动化测试框架的时候我们就需要用到这个模块了,方便我们快速的定位错误,了解软件的运行情况,更加顺畅的调试程序。为什么要用到日志模块,直接print不就好了!那得写多少print…...
【THREE.JS学习(1)】绘制一个可以旋转、放缩的立方体
学习新技能,做一下笔记。在使用ThreeJS的时候,首先创建一个场景const scene new THREE.Scene();接着,创建一个相机其中,THREE.PerspectiveCamera()四个参数分别为:1.fov 相机视锥体竖直方向视野…...
影视网站设计/汕头网站关键词推广
wellcms伪静态设置.为了保证更强劲的性能和节省流量,独立安装版自动对php文件和html进行压缩,考虑到js或jquery每个人在写代码的时候使用注释方式的不同,所以html默认压缩了除js以外的全部代码。如需开启压缩模式,请务必卸载非wel…...
专门做产品推广ppt的网站/鹤壁seo
2014年初,4G联网首次进入汽车前装市场,同一年,通讯及手机芯片厂商高通公司首次推出骁龙602A处理器,开启汽车联网信息娱乐服务新纪元。 两年后,高通发布了全新的信息娱乐系统处理器骁龙820A,和骁龙602A相比…...
龙岩网站推广/aso应用商店优化
命令: g/pattern/d 如,删除包含字母 hell 的行 g/hell/d 删除 不 匹配指定字符的行(未验证,有需要的朋友可以试一下) v/pattern/d g!/pattern/d...
个人网页网站建设/网络营销做得比较成功的案例
1. 场景大家如果平常遇到不认识的英文,相信大部分的人都会复制内容后,使用翻译软件,或者拷贝到网站上去执行翻译。当然,对于 IDE、浏览器可以装一些插件来翻译,有道也有划词翻译。但是,经常会有一些解析对话…...
广州网站模板建站/广州谷歌seo公司
Extending QML - Object and List Property Types Example 扩展QML-对象和列表属性类型示例 Exporting C Properties. 导出C属性。 This example builds on: 此示例基于: Extending QML - Adding Types Example The Object and List Property Types example s…...
做网站需要什么人员/电商运营怎么自学
题意描述: 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 注意,返回任意的子集,所以与之前的题目在终止条…...