首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

磁盘存储原理:从电与磁说起

一、磁盘电磁原理: 1、电磁效应: 电流通过导体时,会在导体周围会产生感应磁场。感应磁场磁极随电流方向改变而改变。...一般从未受到外部干扰磁性粒子磁极方向是随机,于是出现互相抵消情况,这时磁盘表现出无磁极显现。 磁盘过程: 写数据时磁头移到到磁盘要写入位置,输入电流产生感应磁场。...如此便将电信号持久化到磁盘上(当然并不是一个磁极方向代表1另一个代表0). 4、磁盘读取过程: [磁盘2.png] 读取磁盘信息时,不通电磁头在写入数据位置上移动,上面可知数据磁盘上就是一些磁极方向不同微小局部区域...在硬盘读写时,读操作是远快于写操作,而且读/写操作具有完全不同特性,所以目前硬盘一般都分离出读和写两个磁头,但原理还是不变。...绝命毒师第五季第一季中,记录着老白制毒过程笔记本电脑被警方获得并放到了物证室里。老白利用电磁效应,在物证室外弄了一个大‘磁铁’破坏了笔记本里面的数据,就是上面的原理

8.8K102

MyISAM按照插入顺序在磁盘存储数据

MyISAM按照插入顺序在磁盘存储数据 聚族索引优点 可以把相关数据保存在一起。例如实现电子邮件时,可以根据用户ID来聚集数据,这样只需要从磁盘读取少数数据页就能获取某个用户全部邮件。...如果没有使用聚族索引,则每封邮件都可能导致一次磁盘I/O; 数据访问更快。聚族索引将索引和数据保存在同一个B-Tree中,因此从聚族索引中获取数据通常比在非聚族索引中查找更快。...缺点: 二级索引叶子节点保存不是指行物理位置指针,而是行主键值。这意味着通过二级索引查找行,存储引擎需要找到二级索引叶子节点获取对应主键值,然后根据这个值去聚簇索引中查找到对应行。...在innodb中,由于聚簇索引顺序就是数据物理存储顺序,因此我们要尽量使主键有序,方法就是使用COMB,前6个字节表示时间,可以精确到毫秒,后10个字节利用UUID前10个字节。...当表上数据行被删除时,所占据磁盘空间并没有立即被回收,使用了OPTIMIZE TABLE命令后这些空间将被回收,并且对磁盘数据行进行重排(注意:是磁盘上,而非数据库)。

82700
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Prometheus时序数据库-磁盘存储结构

    前言 之前文章里,笔者详细描述了监控数据在Prometheus内存中结构。而其在磁盘存储结构,也是非常有意思,关于这部分内容,将在本篇文章进行阐述。...最近Block一般是存储了2小时数据,而较为久远Block则会通过compactor进行合并,一个Block可能存储了若干小时信息。...if cutNewBatch { ...... } ...... } } 当写入磁盘单个文件超过512M时候,就会自动切分一个新文件。...寻址过程 索引就是为了让我们快速找到想要内容,为了便于理解。笔者就通过一次数据寻址来探究Prometheus磁盘索引结构。...事实上,真正Label Index比图中要复杂一点。它设计成一条LabelIndex可以表示(多个标签组合)所有数据。不过在Prometheus代码中只会采用存储一个标签对应所有值形式。

    2.9K00

    clickhouse多磁盘存储

    使 clickhouse 可以实现阶梯式多层存储,即将冷热数据分离,将冷热数据分别保存在不同类型存储设备中。 日常交互式查询中,95% 查询访问近几天数据,剩下 5% 跑一些长周期批处理任务。...我们可以通过阶梯式多层存储,将最新热点数据放在高性能介质如 SSD,旧历史数据放在廉价机械硬盘中。...此外,将数据存在多个存储设备中,以扩展服务器存储能力,clickhouse 也能够自动在不同存储设备之间移动数据。...每张 MergeTree 表都有一个存储策略,用以规定该表数据如何写入;策略将不同磁盘分到一个或多个卷中,并规定了数据写入顺序以及如何在磁盘之间移动数据。...”),通过将多个磁盘分配在一个卷中,每次插入数据所生成data part会以轮询方式依次写入这些磁盘,该策略优点: 通过直接追加磁盘形式,可以便捷地扩展存储能力 在多线程并行访问多个不同磁盘时,

    1.5K60

    磁盘工作原理解读

    磁盘存储区域一块磁盘划分为若干个记录面,每个记录面划分为若干条 磁道,而每条磁道又划分为若干个 扇区,扇区(也称块、扇段)是磁盘读写最小单位,即磁盘按块存取。...磁盘地址一个磁盘存储器可以有多台驱动器,不同驱动器可以用一个编号(驱动器号,或者台号)来区分。...冗余磁盘阵列(Redundant Array of Independent Disks,RAID)是将多个独立物理磁盘组成一个磁盘阵列,引入并行处理技术,让数据在多个物理盘上分割交叉存储、并行访问。...它适用于对性能要求高且数据可以容忍丢失场景。RAID 1:通过磁盘镜像(mirroring)提供数据冗余,所有数据同时写入两个或更多磁盘,因此如果一个磁盘损坏,另一个磁盘上仍有完整数据副本。...RAID 1提供了很高数据安全性,但存储成本较高,因为实际可用存储空间只有总磁盘容量一半。RAID 2、RAID 3、RAID 4:这些RAID级别在实际应用中使用较少。

    15400

    磁盘原理简要分析

    换句话说,盘片两个面都能用于存储、读取数据。 现在我们知道了,数据其实是存在磁性材料上,那这里再思考一个问题:「磁盘怎么知道,数据该存在哪块磁性材料上?读取时候又该从哪块材料上读?读多少?」...转换成图形可能就是这样: 盘片ZBR 不同磁道扇区数量不同了,外圈磁道上面的扇区会更多些,从而充分利用空间,提升磁盘总容量。 存储原理 好,继续深入问题盘片存储相关问题。...并且,从上述现状我们可以简单推导,既然读写磁盘都是靠读取盘片上磁性序列,并且盘片两个面都能用于存储数据,那么必然盘片每个面都有磁头。...磁盘性能 了解完一些简单原理之后,我们终于可以来了解磁盘性能相关问题了,我们会深入分析为什么磁盘 IO 是个非常昂贵操作。 现在思考一个问题,我们要查询数据,底层会怎么做?...好了, 关于磁盘原理就简单介绍到这里。

    42610

    Git存储原理

    Git 设计原理概括讲,Git 就是一个基于快照内容寻址文件系统。 往下慢慢看。...Git 基本数据对象blob(二进制大对象):也就是前面说基于快照存储文件tree:目录,代表了 blob 对象集合commit:提交,包含了 blob、tree 集合tag:标签对象(指 annotation...标签),还有一种轻量标签不记录创建标签人等额外信息,不需要再单独创建标签对象上述 4 种数据对象均存储在.git/object/目录下,git 会对每一种数据对象计算哈希值来确定具体存储路径,下面来举个例子...cat-file 命令可以根据传入哈希值取出 git 存储对象-p 自动判断内容类型一次提交数据结构可以用下图来概括:Git 包文件可能有的小伙伴通过上述方式在自己项目中尝试时...Git 引用引用类似于指针,除了 HEAD 存储在.git/HEAD 以外,其他指针存储在.git/refs 目录下分支HEAD:一种特殊指针,用于指向目前所在 commit,.git/HEAD 文件里存储就是引用

    6610

    谈谈你对Kafka数据存储原理理解?

    一位5年工作经验小伙伴面试时候被问到这样一个问题,说”谈谈你对Kafka数据存储原理理解“。然后,这位小伙伴突然愣住了,什么是零拷贝,零拷贝跟Kafka有关系吗?...那么今天,我给大家来聊一聊我对Kafka零拷贝原理理解。 1、Topic主题 在Kafka中,这个用 来存储消息队列叫做Topic,它是一个逻辑概念,可以理解为一组消息集合。...其中.index是用来存储ConsumerOffset偏移量索引文件,.timeindex是用来存储消息时间戳索引文件,log文件就是用来存储具体数据文件。...相对来说,越稠密索引检索数据更快,但是会消耗更多存储空间; 越稀疏索引占用存储空间小,但是插入和删除时所需维护开销也小。 同样,时间戳索引也是采用稀疏索引设计。...由于索引文件是以Offset命名,所以Kafka在检索数据时候,是采用二分法查找,效率就非常快。 以上就是我对Kafka数据存储原理理解!

    65120

    Linux 中存储结构与磁盘划分

    会把整个磁盘每个写入动作细节都预先记录下来,以便在发生异常宕机后能回溯追踪到被中断部分,然后尝试进行修复。...(mtime); 文件特殊权限(SUID、SGID、SBIT); 该文件真实数据地址(point)。...使用推荐 SCSI 就可以: ? 选择创建新虚拟磁盘,点击下一步: ? 硬盘大小默认 20G 但是这并不是说立马就用完了,所以放心选择,并选择将磁盘拆分为多个文件: ?...六、管理硬盘 1、fdisk 工具 fdisk 命令用于管理磁盘分区,格式为“fdisk [磁盘名称]”,它提供了集添加、删除、转换分区等功能于一身“一站式分区服务”。 ?...但由于交换分区毕竟是通过硬盘设备读写数据,速度肯定要比物理内存慢,所以只有当真实物理内存耗尽后才会调用交换分区资源。交换分区创建过程与前文讲到挂载并使用存储设备过程非常相似。

    1.7K20

    MYSQL 时间类型在磁盘存储结构

    本文主要讲mysql时间类型在磁盘存储结构(innodb)时间类型mysql时间类型主要有如下几种 (5.6.4之后版本)类型占用空间字节序取值范围date3大端'1000-01-01' to...n(fractional-seconds), 关系如下N = int((n+1)/2)nN001,213.425,63存储结构date从左到右为:1 bit sign14 bit year4 bit...(1 9 # 与目标数做与运算 得到 除了239 位数不变外, 其它数均为0. 1与(...1/0)得(1/0) 0与(1/0)得0# 将与后数据, 去掉后面的0, (右移9位, 就是刚才左移9位).time从左到右为1 bit sign11 bit hour (实际上是10bit...month = int(year_month%13)timestamp这个就是秒数(uint32), 直接取值即可int.from_bytes(bdata[:4],'big')分秒如果固定时间类型后面还有数据

    99320

    存储01-磁盘阵列历史

    1.软raid 由于时代和磁盘技术发展限制(单盘容量和性能发展缓慢),产生了raid相关技术。技术产生了,如何才能快速来实现和进行部署呢?...(术业有专攻) 3.raid卡+jbod 由于机箱空间有限,可安装磁盘数量受限,怎么办?...专门做一个磁盘箱子呗,这个磁盘箱子就是jbod(磁盘+磁盘背板+主机接口)。当主机磁盘不够时候,就加jbod箱子,一个不够就两个,两个不够就三个,以此类推。...但是随着客户把越来越多越来越重要数据放入存储,这个时候就有一个非常大隐患:存储控制器单点故障。你想啊,客户花了大价钱把全部身家性命都放你这个单控制器身上了,万一你那天挂了,客户不得砍死你。...比如还是每个控制器10个lun工作量,但是A控制器10个lun刚好是数据库用,iops和随机读写特别忙;B控制器10个lun刚好是存小电影,一年也看不了几次。这就导致A特别忙,B特别闲。

    1.6K21

    磁盘文件读取——客户端存储

    概述 磁盘文件 指的是客户端操作系统本地文件系统中文件,也经常直接被称作本地文件,但因为容易与沙箱文件系统WEB本地文件系统相混淆,所以特意将名称区分了一下。...磁盘文件读取API是通过FileReader对象来实现。...使用FileReader对象,web应用程序可以异步读取存储在用户计算机上文件(或者原始数据缓冲)内容,可以使用File对象或者Blob对象来指定所要处理文件或数据.其中File对象可以是来自用户在一个...元素上选择文件后返回FileList对象,也可以来自拖放操作生成 DataTransfer对象。...这也意味着没有用户参与,WEB应用程序是没有能力直接指定读取磁盘任何一个文件。 代码示例 下面的代码可以实现图片本地预览: <!

    1.5K20

    数据入门:Hbase存储原理解析

    今天数据入门分享,我们就来讲讲Hbase存储原理。...要了解Hbase存储原理,我们先从Hbase数据结构开始讲起。 Hbase数据结构 Hbase是一个稀疏、多维度、排序映射表,这张表索引是行键、列族、列限定符和时间戳。...Hbase存储原理 HBase在存储上是基于LSM树实现,与传统B/B+树原理不同是,LSM树非常适用于写入要求非常高场景。...LSM原理,就是将一个大B(B+)树拆分成N棵小树,数据首先写入内存中(有序),随着数据写入越来越多,内存中数据会被flush到磁盘中形成一个文件;在读取数据时,则需要合并磁盘中历史数据和内存中最近修改操作后返回...关于大数据入门,Hbase存储原理解析,以上就为大家做了基本介绍了。Hbase在大数据生态当中,尤其是数据存储环节,重要程度非常高,也建议大家去深入地理解和掌握。

    1.1K20

    数据原理——事务、视图、存储过程

    持久性(Durability):持久性是指一个事务一旦被提交,它对数据库中数据改变就是永久性,接下来其他操作和数据库故障不应该对其有任何影响。...,当这些事务访问数据库中相同数据时,如果没有采取必要隔离机制,就会导致各种并发问题。...幻读: 幻读本质上也属于不可重复读情况,T1 读取某个范围数据,T2 在这个范围内插入新数据,T1 再次读取这个范围数据,此时读取结果和和第一次读取结果不同。...逻辑 查,一般不能增删改 表 create table 保存了数据 增删改查 三、存储过程和函数 类似于java中方法 好处...存储过程 含义:一组预先编译好SQL语句集合,理解成批处理语句 提高代码重用性 简化操作 减少了编译次数并且减少了和数据库服务器连接次数,提高了效率 语法 创建 create procedure

    97720

    磁盘IO原理及其性能分析

    上一篇文章大概介绍了I/O一些基本原理和技术,这篇我们主要介绍基于Linux系统I/O一些运行原理、监控方式。 虚拟内存 为了优化读取磁盘数据效率,操作系统在内存和磁盘之间增加了一层缓存。...可以将虚拟内存看成是磁盘数据一种缓存机制。另外,应用程序不需要关心虚拟内存底层工作原理,虚拟内存有一套自己逻辑来管理整个内存,应用程序感知就像物理内存变大了一样。...当程序在进行一些计算时,CPU会请求内存中存储数据,若数据不存在内存中,就会报告一个缺页错误(Page Fault),用户进程就中断了,进程会从用户态切换到系统态,交由操作系统内核处理缺页错误,处理完缺页错误之后...直接IO就是应用程序直接访问磁盘数据,而不经过内核缓冲区,这种一般使用在数据库中,这样做目的是减少一次从内核缓冲区到用户程序缓存数据复制,另外,不使用系统缓存,而使用数据库自己缓存,因为数据库可以根据数据特点进行缓存...从磁盘读出总数Blk_wrtn 写入磁盘总数 kB_read/s 每秒从磁盘读取数据大小,单位KB/skB_wrtn/s 每秒写入磁盘数据大小,单位KB/skB_read

    3.3K30

    关于overlay2存储驱动磁盘配额问题

    概述 这篇短文向大家介绍一下正确使用存储驱动姿势,非常有用。...为啥要用overlay2 docker centos(内核3.10)上默认存储驱动是devicemapper loop-lvm模式,这种模式是用文件模拟块设备,不推荐生产使用 direct lvm又不是一个开箱即用模式...,懒得配置 最关键是 docker in docker情况下 device mapper是行不通,典型场景就是用drone时,构建docker镜像就不能正常工作 overlay存储驱动层数过多时会导致文件链接数过多可能会耗尽...xfs defaults,pquota 0 0" >> /etc/fstab fi overlay2如果不做一些特殊操作,cadvisor是监控不到容器内实际使用多少磁盘...log-opts": { "max-size": "10m" } } systemctl daemon-reload systemctl restart docker 这样就可以把每个容器磁盘大小限制在

    1.4K20

    Postgresql 如何降低 wal 占用磁盘空间,降低磁盘存储成本

    POSTGRESQL WAL 存储一直是一个值得讨论问题,到底一个POSTGRESQL 在极端情况下,可以用多少空间来存储WAL 日志。...这里不是要讨论逻辑复制槽,也不是讨论ARCHIVE ,这里要讨论是一种极端方法,尝试将POSTGRESQL WAL占用磁盘空间最小化。...1 full page 众所周知,在POSTGRESQL WAL 为了保证日志在系统crash后,有最后一次checkpoint 前数据完整页面,需要在必要时刻,在数据页面未写入完全时候...先说一下测试流程 1 产生新wal log 2 记录 wal log lsn 号 3 对数据库进行压测 4 记录产生记录号 5 对于整体日志产生进行分析。...那么此时第一个问题 full page 关闭后,对日志影响大概,大家心里也会有数,full page 的确是wal 日志中记录数据大头。

    1.1K10

    kvm qcow2,raw 磁盘格式、磁盘存储策略介绍

    qcow2,raw 磁盘格式介绍 raw: 裸磁盘格式(默认虚拟磁盘格式) raw格式是原始镜像,直接将数据写入磁盘,没有额外数据或压缩,由于没有复杂数据处理,raw 格式通常比较快,适用于一些对性能要求较高场景...精简置备磁盘只使用该磁盘最初所需要数据存储空间。如果以后精简磁盘需要更多空间,则它可以增长到为其分配最大容量。为该磁盘文件指定增长最大空间,需要增长时候检查是否超过限额。...,当虚拟机写入数据时,根据写入数据量动态分配物理存储空间。...因此理论上虚拟机分配磁盘大小总和不受物理存储总容量限制,即虚拟机磁盘容量可以超配。...但是虚拟机运行过程中会持续写入数据,当虚拟机动态分配存储空间接近物理存储实际容量时,虚拟机无法继续分配到存储空间从而导致运行异常。

    2.3K10
    领券