磁盘碎片

mysql的索引innodb和myisam, 以及B+Tree和B-Tree详解

匿名 (未验证) 提交于 2019-12-02 22:02:20
版权声明:转载请标明出处~~ https://blog.csdn.net/zzzgd_666/article/details/90722011 一. mysql的索引 mysql常用的索引有以下几种: hash索引 hash索引通过hash值来匹配对应的数据,类似键值对的形式,查找的时候可以精准一次定位,但是对于范围查询,排序效率不高,并且hash索引不能避免全表扫描,因为hash值并不能完全保证一个hash值匹配一个数据(hash冲突),还是需要比对实际数据 btree索引 MySQL里默认和最常用的索引类型,利用二分查找的思想构建的数据结构 全文索引 myisam引擎支持全文索引,innodb在mysql5.6以后也支持全文索引,不过基于mysql很少存储text大文本数据,全文检索也被es替代 二. 二叉树到B-Tree和B+Tree 2.1 二叉树到平衡二叉树 二叉树是一种基础的树结构,它通常由一个根节点和衍生的分支组成.它的特点是: 每个节点都最多只有两个子节点(分支) 二叉树只是一个树结构,在实际应用中还有一种特殊的二叉树,叫二叉查找树. 它在二叉树的基础上,多了一个特点,左边的节点都比右边的节点小 但是可能会出现特殊情况,就会从树状结构变成链表结构,查询效率大打折扣.结构如下 为了解决这个问题,又出现了平衡二叉树. 平衡二叉树的特点就是

mysql配置文件

狂风中的少年 提交于 2019-12-02 19:57:10
[client] 客户端设置,即客户端默认的连接参数 port = 3306 默认连接端口 socket = /usr/local/mysql/data/mysql.sock 用于本地连接的socket套接字 default-character-set = utf8mb4 编码 [mysqld] 服务端基本设置 port = 3306 MySQL监听端口 socket = /usr/local/mysql/data/mysql.sock 为MySQL客户端程序和服务器之间的本地通讯指定一个套接字文件 pid-file = /usr/local/mysql/data/mysql.pid pid文件所在目录 basedir = /usr/local/mysql 使用该目录作为根目录(安装目录) datadir = /usr/local/mysql/database 数据文件存放的目录 tmpdir = /usr/local/mysql/data/tmp MySQL存放临时文件的目录 character_set_server = utf8mb4 服务端默认编码(数据库级别) collation_server = utf8mb4_bin 服务端默认的比对规则,排序规则 user = root MySQL启动用户。如果是root用户就配置root,mysql用户就配置mysql log

《现代操作系统(中文第四版)》笔记 第四章 文件系统

和自甴很熟 提交于 2019-12-02 06:54:08
#第四章 文件系统 在多程序多用户的系统上,读取数据有以下问题: 如何找到信息? 如何防止一个用户读取另一个用户的数据 如何知道哪些块是空闲的? 通过前面的学习, 我们知道 操作系统对处理器进行抽象 建立了进程这个概念; 通过对物理存储器的抽象建立了 虚拟地址空间的概念, 现在,为了解决问题, 就创建了 文件 这个抽象概念。 操作系统处理文件的部分 称为 文件系统 。 4.1文件 文件命名 :如homepage.html, 圆点前面是名字,圆点以后是文件扩展名,.html表示 这是一个html文件。在某些系统中,文件扩展名是一种约定,指定为某一类文件,但是操作系统并不强制采用这种形式,常见扩展名如下: 文件结构 :常见三种方式: 无结构字节序列:全都是字节,其内容含义只有在用户程序中解释,UNIX和Windows都采用这种方法 记录序列:这种结构中,文件时有固定长度记录的序列,每个记录尤其内部结构 树:文件由一颗记录树构成,每个记录长度不一,每个记录的固定位置有一个 键 ,通过键可以快速查找,一般在处理商业数据的大型计算机系统中使用。 文件类型 : 目录(或者说文件夹):每个目录也是一种文件, 是管理文件系统结构的系统文件 普通文件:一般分为ASCII文件和二进制文件。 ASCII文件的优势就是可以显示和打印, 也是普通用户常用的文件,如文本。二进制文件如视频图片等。 字符特殊文件

《现代操作系统(中文第四版)》课后习题答案 第四章 文件系统

假如想象 提交于 2019-12-02 06:50:39
题目略。 如有错误答案,请各位评论指出,多谢多谢 1、使用 . 或 …切换文件路径 /etc/passwd /./etc/passwd /././etc/passwd /./././etc/passwd /etc/../etc/passwd /etc/../etc/../etc/passwd /etc/../etc/../etc/../etc/passwd /etc/../etc/../etc/../etc/../etc/passwd 2、Windows方法是使用文件扩展名。每个扩展名对应一个文件类型和一些处理该类型的程序。另一种方法是记住哪个程序创建了文件并运行该程序。麦金托什就是这样工作的。 3、这些系统直接将程序加载到内存中,并在单词0处开始执行,这就是幻数。为了避免试图以代码的形式执行头,幻数是一条分支指令,目标地址就在头的上方。通过这种方式,可以将二进制文件直接读取到新进程的地址空间中,并在0处运行它,而不必知道头有多大。 4、首先,如果没有打开,则每次读取时都需要指定要打开的文件的名称。然后,系统将不得不为它获取i节点,尽管可以缓存。快速出现的一个问题是何时将i节点刷新回磁盘。然而,它可能会超时。这可能有点笨拙,但可能会奏效。 5、如果要再次读取文件,只需随机访问字节0。 6、对。重命名调用不会更改创建时间或上次修改时间

操作系统——文件管理

此生再无相见时 提交于 2019-12-01 08:55:34
目录 一、文件系统 1.1文件与文件系统 1.2文件的逻辑结构 1.3文件目录 1.4文件共享 1.5文件保护 二、文件系统实现 2.1文件系统层次结构 2.2目录实现 2.3文件实现 三、磁盘组织与管理 3.1磁盘的结构 3.2磁盘调度算法 3.3磁盘的管理 一、文件系统 1.1文件与文件系统 1、文件 1)数据项 在文件系统中,数据项是最低级的数据组织形式。分为两种类型: 基本数据项。描述一个对象某种属性的字符集,是数据组织中可以命名的最小逻辑数据单位,又称字段。除了数据名还有数据类型 组合数据项。由若干基本数据项组成 数据项的名字和类型共同定义了数据项的“型”,表征一个实体在数据项上的数据称为“值” 2)记录 记录是一组相关数据项的集合,用于描述一个对象在某方面的属性 一个记录应包含哪些数据项取决于需要描述对象的哪个方面 唯一标识一个记录的一个或多个数据项称为 关键字 3)文件 文件是具有文件名的一组相关元素的集合,可分为有结构文件和无结构文件 有结构文件由若干个相关记录组成,无结构文件看成是一个字符流 文件是文件系统中最大的数据单位 文件属性包括:文件类型、文件长度、文件的物理地址、文件的建立时间 2、文件系统 1)定义 文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构,即在磁盘上组织文件的方法;也指用于存储文件的磁盘或分区,或文件系统种类

MySQL配置文件

不想你离开。 提交于 2019-11-30 22:45:43
1 [client] 2 #客户端设置,即客户端默认的连接参数 3 # password = 你的密码 4 port = 3306 5 #默认连接端口 6 socket = /usr/local/mysql/data/mysql.sock 7 #用于本地连接的socket套接字 8 default-character-set = utf8 9 #编码 10 11 [mysqld] 12 #服务端基本设置 13 port = 3306 14 #MySQL监听端口 15 socket = /usr/local/mysql/data/mysql.sock 16 #为MySQL客户端程序和服务器之间的本地通讯指定一个套接字文件 17 pid-file = /usr/local/mysql/data/mysql.pid 18 #pid文件所在目录 19 basedir = /usr/local/mysql 20 #使用该目录作为根目录(安装目录) 21 datadir = /usr/local/mysql/database 22 #数据文件存放的目录 23 tmpdir = /usr/local/mysql/data/tmp 24 #MySQL存放临时文件的目录 25 character_set_server = utf8 26 #服务端默认编码(数据库级别) 27 collation

块存储、文件存储、对象存储的优缺点、应用场景

橙三吉。 提交于 2019-11-29 14:53:38
参考文章链接: 一篇文章让你理解Ceph的三种存储接口(块设备、文件系统、对象存储): https://blog.csdn.net/wangmingshuaiguo/article/details/92628036 Ceph介绍及原理架构分享: https://www.jianshu.com/p/cc3ece850433 Red Hat Ceph存储—《深入理解Ceph架构》: http://ceph.org.cn/2018/06/29/red-hat-ceph%E5%AD%98%E5%82%A8-%E3%80%8A%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3ceph%E6%9E%B6%E6%9E%84%E3%80%8B/ ceph IO切割成对象和对象名的组成(块存储): https://blog.csdn.net/a1454927420/article/details/78134554 三种存储类型比较-文件、块、对象存储: https://blog.csdn.net/sinat_27186785/article/details/52032431 块存储就是在物理层这个层面对外提供服务,使用它的系统,有用自己的文件系统格式化。这样一旦被一个系统使用,就独占了。 文件存储,就是在文件系统一层对外提供服务,系统只用访问文件系统一级就可以

内存管理

佐手、 提交于 2019-11-29 05:40:01
如何进行内存管理 为了让每个进程认为 独占 地使用内存,并且让每个进程看到的内存是 一致 的,操作系统对物理内存、磁盘进行了 抽象 ,抽象出 虚拟内存 。并且把虚拟内存、物理内存以相同固定大小的 页 进行切分管理( 分页 ),虚拟内存中叫页,物理内存中的叫页帧。 每个进程虚拟地址空间是独立的。用户访问的是虚拟内存的地址,即虚拟地址。需要通过 CPU 芯片上的 内存管理单元 MMU 硬件根据页表 翻译 成物理地址,才能真正访问内存。 页表 :每个进程都有它的独立的页表(放在内存里),用来存对虚拟页、物理页的 映射 。页表可以有多级页表,以时间换取空间(实际上,多级页表的地址翻译,并不比单级页表慢很多)。 为什么用分页机制 如果直接按一个个程序加载到内存,会出现内存 碎片 。 后来出现 分段 机制,按程序的各段来存储,从而减少碎片,但是还是有很多。 所以引出分页,把程序分成更小的页(一般大小为 4KB )来管理内存。分得更小,会增加负荷,但实际上利大于弊。 硬件关系 通过虚拟地址 访问 数据: MMU 先通过它里面的 TLB 缓存查询,如果没有,则去内存中的 页表 进行查询。成功翻译成物理地址后,访问 一级缓存 获取数据。如果没有则访问 二级缓存 (可能还有三级缓存)。还是没有就访问 内存 。 物理内存 不够 时: 将不用的页面换出到磁盘中的 swap 分区 里。 内存空间布局

【linux】free命令中cached和buffers的区别

北城余情 提交于 2019-11-29 00:04:56
一、命令 1 2 3 4 5 [root@localhost ~] # free -m total used free shared buffers cached Mem: 7869 7651 218 1 191 5081 -/+ buffers /cache : 2378 5490 Swap: 478 139 339 二、计算 这里使用1、2 分别代表第一行和第二行的数据 1 2 3 4 5 6 7 8 total1:表示物理 内存总量 used1:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用 free1:未被分配的内存 shared1:共享内存,一般系统不会用到,这里也不讨论 buffers1: 系统分配但未被使用的buffers 数量 cached1:系统分配但未被使用的cache 数量 used2:实际使用的buffers 与cache 总量,也是实际使用的内存总量 free2:未被 使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存 可以整理出如下等式 1 2 3 4 total1 = used1 + free1 total1 = used2 + free2 used1 = buffers1 + cached1 + used2 free2 = buffers1 + cached1 +

linux系统调优-存储(内存、硬盘)

旧城冷巷雨未停 提交于 2019-11-28 12:15:50
首先一个基本概念: ‍ 存储系统存储速度的快->慢: 内存->闪存->磁盘 因为内存的价格限制以及操作系统支持的限制,我们只能从磁盘这块来看,可见磁盘正是存储系统的最大瓶颈所在。 **下面具体提出我们的优化方案 优化方案1.缓存机制: 我们在磁盘里嵌入一小块高速的内存,用以保持常用的数据,我们称它为缓存。这样既可以使用磁盘,也能提高性能 缓存分为3类 Filestem cache、Diskcache、Disk controller cache。这里从磁盘部分来看,它包括了缓存数据。预读。回写。 缓存尝试用LRU算法、即近最少使用算法顾名思义。 写入缓存,即IO命令并不立刻的去执行,而是先在缓存中合并,相同的合为一个连续的合为一体,把随机写IO变成连续写。这样做的直接作用减少了寻址浪费时间从而有效提高效率 缓存的大小设置问题:不能太大了因为成本!!硬伤所在。。 小了呢他相对于大的存储系统就显的不够看,而且你要找一个东西他不在缓存里系统还要去缓存寻址一次。这样做的太多自然降低了效率。 [#1#root@localhost ~]#free -m Total// used free shared buffers cache 物理内存总量 已使用内存量 空闲内存 多个进程的共享内存 元数据缓存 块数据缓存 Mem: 490 132 357 0 7 38 -/+ buffers/cache: