精华内容
下载资源
问答
  • MySql数据库最大的特色就是其插件式的存储引擎架构,本文主要介绍MySql常用...下图是官方提供的一张架构图:MySQL体系结构图从上图可以发现,MySQL以下几部分组成:连接池组件管理服务和工具组件SQL接口组件查询分...

    MySql数据库最大的特色就是其插件式的存储引擎架构,本文主要介绍MySql常用的存储引擎,为开发时选择合适的存储引擎提供参考。

    1. MySql体系结构#

    在介绍存储引擎之前先来介绍下MySql的体系结构,以便大家知道存储引擎在MySql整个体系中处于什么位置。下图是官方提供的一张架构图:

    f71dc42a5cffa8548fdae5ad22891e63.png

    MySQL体系结构图

    从上图可以发现,MySQL由以下几部分组成:

    连接池组件

    管理服务和工具组件

    SQL接口组件

    查询分析器组件

    优化器组件

    缓冲(Cache)组件

    插件式存储引擎

    物理文件

    MySQL数据库区别于其他数据库的最重要的一个特点就是其插件式的表存储引擎,从上图中也可以看到,MySql支持很多种存储引擎。需要特别注意的是,存储引擎是基于表的,而不是数据库。

    2. MySql存储引擎#

    插件式存储引擎的好处是:能够根据具体的应用的特点选择不同的存储引擎。下面是几种MySQL常用的存储引擎。

    2.1 InnoDB存储引擎#

    InnoDB存储引擎支持事务,其设计目标主要面向在线事务处理(OLTP)的应用。其特点是行锁设计、支持外键,并支持类似于Oracle的非锁定读,即默认读取操作不会产生锁。从MySQL数据库5.5.8版本开始,InnoDB存储引擎是默认的存储引擎。

    InnoDB通过使用多版本并发控制(MVCC)来获得高并发性,并且实现了SQL标准的4种隔离级别,默认为REPEATABLE级别。同时,使用一种被称为next-key locking的策略来避免幻读(phantom)现象的产生。除此之外,InnoDB储存引擎还提供了插入缓冲(insert buffer)、二次写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead)等高性能和高可用的功能。

    对于表中数据的存储,InnoDB存储引擎采用了聚集(clustered)的方式,因此每张表的存储都是按主键的顺序进行存放。如果没有显式地在表定义时指定主键,InnoDB存储引擎会为每一行生成一个6字节的ROWID,并以此作为主键。

    2.2 MyISAM存储引擎#

    MyISAM存储引擎不支持事务、表锁设计,支持全文索引,主要面向一些OLAP数据库应用。此外,MyISAM存储引擎的另一个与众不同的地方是它的缓冲池只缓存(cache)索引文件,而不缓冲数据文件,这点和大多数的数据库都非常不同。从MySQL 5.0版本开始,MyISAM默认支持256TB的单表数据,这足够满足一般应用需求。

    2.3 Memory存储引擎#

    Memory存储引擎(之前称HEAP存储引擎)将表中的数据存放在内存中,如果数据库重启或发生崩溃,表中的数据都将消失。它非常适合用于存储临时数据的临时表,以及数据仓库中的纬度表。Memory存储引擎默认使用哈希索引,而不是我们熟悉的B+树索引。

    虽然Memory存储引擎速度非常快,但在使用上还是有一定的限制。比如,只支持表锁,并发性能较差,并且不支持TEXT和BLOB列类型。最重要的是,存储变长字段(varchar)时是按照定常字段(char)的方式进行的,因此会浪费内存。

    此外有一点容易被忽视,MySQL数据库使用Memory存储引擎作为临时表来存放查询的中间结果集(intermediate result)。如果中间结果集大于Memory存储引擎表的容量设置,又或者中间结果含有TEXT或BLOB列类型字段,则MySQL数据库会把其转换到MyISAM存储引擎表而存放到磁盘中。之前提到MyISAM不缓存数据文件,因此这时产生的临时表的性能对于查询会有损失。

    2.4 Archive存储引擎#

    Archive存储引擎只支持INSERT和SELECT操作,从MySQL 5.1开始支持索引。Archive存储引擎使用zlib算法将数据行(row)进行压缩后存储,压缩比一般可达1∶10。正如其名字所示,Archive存储引擎非常适合存储归档数据,如日志信息。Archive存储引擎使用行锁来实现高并发的插入操作,但是其本身并不是事务安全的存储引擎,其设计目标主要是提供高速的插入和压缩功能。

    当然MySql还支持很多其他的存储引擎,这边不一一列举了。

    3. 存储引擎对比整理

    存储引擎可以理解为表的存储结构,每种存储引擎都支持不同的特性。MySQL支持插件式的存储引擎,可以为每张数据表指定不同的存储引擎。常用的存储引擎的特点整体如下:

    bd00e074670d07e36fb3812ded90bccd.png

    我们也可以使用下面命令查看当前数据库支持哪些存储引擎:

    Copy

    -- 查看支持的存储引擎

    show engines;

    下面对最常用的三种存储引擎做下简单总结介绍:

    InnoDB:MySQL默认的存储引擎,支持事务、支持行级锁和表级锁、支持各类索引、支持外键,高版本的MySQL还支持全文索引,但是批量数据插入的效率较低;

    MyISAM:具有较高的数据插入效率和数据查询速度,支持全文索引,但是不支持数据库事务,不支持行级锁,只支持表级锁;

    MEMORY:使用这个存储引擎时,会将表中的数据加载到内存中,查询很快,但是对内存要求较高。

    所以我们应该根据应用的具体需求选择合适的存储引擎,而不是不加思考的都选择默认存储引擎(INNODB)。

    如果要提供提交、回滚和恢复的事务安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个很好的选择。如果数据表主要用来插入和查询记录,则MyISAM引擎提供较高的处理效率。如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存的MEMORY引擎中,MySQL中使用该引擎作为临时表,存放查询的中间结果。如果只有INSERT和SELECT操作,可以选择Archive引擎,Archive存储引擎支持高并发的插入操作,但是本身并不是事务安全的。Archive存储引擎非常适合存储归档数据,如记录日志信息可以使用Archive引擎。

    展开全文
  • 本文是HCIE云计算学习的存储部分学习笔记,主要介绍了分布式存储的原理,并详细介绍了华为分布式存储产品FusionStorage。 Server SAN(分布式存储) 概念 多个独立服务器自带的存储组成⼀个存储资源池(逻辑),...

    前言

    本文是HCIE云计算学习的存储部分学习笔记,主要介绍了分布式存储的原理,并详细介绍了华为分布式存储产品FusionStorage。

    Server SAN(分布式存储)

    • 概念
      由多个独立服务器自带的存储组成⼀个存储资源池(逻辑),同时融合了计算和存储资源。
    • 特征
      • 专有设备变通用设备(既能做计算,又能做存储)
      • 计算与存储线性扩展
      • 简单管理、低TCO

    Server SAN实现效果

    Server SAN实现效果

    华为Server SAN产品 FusionStorage

    分布式块存储软件

    • 将通用X86服务器的本地HDD、 SSD等介质通过分布式技术组织成大规模存储资源池。
    • 对非虚拟化环境的上层应用和虚拟机提供工业界标准的SCSI和iSCSI接口。
    • 开放的API。
      Fusion Storage

    数据有效性机制

    数据有效性机制

    FusionStorage副本机制

    分布式存储采用的数据有效性机制。
    FusionStorage副本机制

    传统SAN架构

    • 孤立的存储资源:存储通过专用网络、专用线缆连接到有限数量的服务器。
    • 存储设备通过添加硬盘框增加容量,控制器性能成为瓶颈。
      传统SAN架构

    传统SAN架构

    • 机头瓶颈:双控~16控,且⽆法线性扩展
    • Cache瓶颈:通常为GB
    • 网络瓶颈: 10G FCoE、8G FC、16G FC、32G FC
    • 传统存储资源缺乏共享:传统存储设备和资源往往由不同厂家提供,之间无法进行资源共享,数据中心看到的是⼀个个孤立的存储资源。
    • 传统存储一般采用集中式元数据管理方式,元数据中会记录所有LUN中不同偏移量的数据在硬盘中的分布,例如LUN1+LBA1地址起始的4KB长度的数据分布在第32块硬盘的LBA2上。每次IO操作都需要去查询元数据服务,随着系统规模逐渐变大,元数据的容量也会越来越大,系统所能提供的并发操作能⼒将受限于元数据服务所在服务器的能力,元数据服务将会成为系统的性能瓶颈。

    分布式Server SAN架构

    没有集中的控制器

    • 共享式存储资源池
    • 计算、存储融合部署
    • 容量和性能线性增长
      分布式Server SAN架构

    Server SAN架构

    • 分布式控制器,可线性扩展至4096节点。
    • 分布式Cache,扩展至TB级,甚至PB级。
    • P2P无阻塞高速IB网络,56G InfiniBand RDMA。
    • 数据中心级资源共享:⼀个数据中心内可以构建⼀个很大的存储资源池,满足数据中心内各类应用对存储容量,性能和可靠性的需求;实现资源共享和统⼀管理。
    • 云数据中心的新存储投资选择。
    • FusionStorage采用的DHT算法具有以下特点:
      • 均衡性:数据能够尽可能分布到所有的节点中,这样可以使得所有节点负载均衡。
      • 单调性:当有新节点加入系统中,系统会重新做数据分配,数据迁移仅涉及新增节点,现有节点上的数据不需要做很大调整。
    • FusionStorage通过创新的架构把分散的、低速的SATA/SAS机械硬盘组织成⼀个高效的类SAN存储池设备,提供比SAN设备更高的IO,把性能发挥到了极致;性能提升1-3倍。
    • FusionStorage采用无状态的分布式软件机头,机头部署在各个服务器上,无集中式机头的性能瓶颈。单个服务器上软件机头只占用较少的CPU资源,提供比集中式机头更高的IOPS和吞吐量。
      • 例如:假设系统中有20台服务器需要访问FusionStorage提供的存储资源,每台服务器提供给存储平⾯的带宽为210Gb,我们在每台服务器中部署1个VBS模块(相当于在每台服务器中部署1个存储机头), 20台服务器意味着可部署20个存储机头,所能获取到的总吞吐量最高可达202*10Gb=400Gb,随着集群规模的不断扩大,可以线性增加的存储机头,突破了传统的双控或者多控存储系统集中式机头的性能瓶颈。

    华为FusionStorage两大主要应用场景

    华为FusionStorage两大主要应用场景

    FusionStorage逻辑架构

    FusionStorage Manager:FusionStorage管理的入口,包括服务器的接入,存储池的创建,磁盘的管理。可以作为一个虚拟机安装在虚拟化环境里,可以支持主备部署。

    物理服务器中需要安装以下几个组件:
    FusionStorage Agent:FusionStorage的代理,FSM和服务器之间的通信,包括指令的下发、服务器状态的检查,都通过代理来做的。并且还包含了三个额外的子进程:

    • MDC元数据控制进程,用于管理FusionStorage下所有的元数据,并负责把元数据安全的保存在磁盘上。
    • VBS虚拟块存储管理组件,用于接收操作系统下发的IO请求,并且把IO请求转发给对应的节点。
    • OSD对象存储设备服务

    服务器有三种角色:管理、计算和存储。
    如果有OSD,一定是存储节点。
    如果有VBS,一定是计算节点。
    如果有MDC,一定是管理节点。

    FusionStorage逻辑架构

    FusionStorage组件介绍

    • FSM(FusionStorage Manager): FusionStorage管理模块,提供告警、监控、日志、配置等操作维护功能。一般情况下FSM主备节点部署
    • FSA(FusionStorage Agent):代理进程,部署在各节点上,实现各节点与FSM通信。 FSA包含MDC、 VBS和OSD三种不同的进程。根据系统不同配置要求,分别在不同的节点上启⽤不同的进程组合来完成特定的功能
    • MDC(MetaData Controller): 元数据控制,实现对分布式集群的状态控制,以及控制数据分布式规则、数据重建规则等。 MDC默认部署在3个节点的ZK(Zookeeper)盘上,形成MDC集群。
    • VBS(Virtual Block System):虚拟块存储管理组件,负责卷元数据的管理,提供分布式集群接⼊点服务,使计算资源能够通过VBS访问分布式存储资源。每个节点上默认部署⼀个VBS进程,形成VBS集群。节点上也可以通过部署多个VBS来提升IO性能。
    • OSD(Object Storage Device):对象存储设备服务,执行具体的I/O操作。在每个服务器上部署多个OSD进程,⼀块磁盘默认对应部署⼀个OSD进程。在SSD卡作主存时,为了充分发挥SSD卡的性能,可以在1张SSD卡上部署多个OSD进程进⾏管理,例如2.4TB的SSD卡可以部署6个OSD进程,每个OSD进程负责管理400GB。

    FusionStorage部署方式

    • 融合部署(一台服务器既作为计算资源,又作为存储资源)
      指的是将VBS和OSD部署在同一台服务器中。
      虚拟化应用推荐采用融合部署的方式部署。
    • 分离部署(计算节点就是计算节点,存储节点就是存储节点,没有交集)
      指的是将VBS和OSD分别部署在不同的服务器中。
      高性能数据库应用则推荐采用分离部署的方式。

    硬件要求

    FusionStorage 硬件要求

    CPU

    FusionStorage Block对服务器CPU的要求如下:

    • 服务器架构
      • X86架构CPU
      • ARM架构CPU(ARM64 Hi1612)
        说明: ARM服务器只适用于存储节点。
    • 部署方式
      • 融合部署:
        CPU要求≥8个超线程(Hyper Thread)
      • 分离部署:
        • 计算节点: CPU要求≥4个超线程(Hyper Thread)
        • 存储节点: CPU要求≥6个超线程(Hyper Thread)

    内存

    内存占用的计算公式如下:

    • 每个服务器占用内存容量 = 操作系统占用内存容量 + 运行FusionStorage Block所占用内存容量
    • FusionStorage Block所占用的内存容量 = MDC进程占用内存容量 + VBS进程占用内存容量 + OSD进程占用内存容量 + 缓存占用内存容量

    MDC进程占用内存容量: 5GB,所有存储节点均需要为MDC进程预留5GB内存
    空间

    VBS进程占用内存容量: 当使用普通网卡时,VBS进程占用8GB内存;当使用IB用卡时,VBS进程占用10.5GB内存。

    OSD进程占用内存容量:
    当使用SSD卡或者NVMe SSD设备做主存时,占用内存为M × 主存SSD设备个数 ×[SSD设备容量GB/实际切分容量(默认切分容量是600GB)]
    其中,“M” 根据切分容量的不同,取值如下:

    • 切分容量≤ 2T: M=3.5GB
    • 切分容量>2T时,容量每增加2T, M的取值增加1GB。 例如: 2T< 切分容量≤4T时, M=4.5GB; 4T< 切分容量≤ 6T时, M=5.5GB。

    如果SSD设备容量GB/实际切分容量的值不为整数,且小数部分的值大于0.1,系统默认剩余容量为1个切分单位,切分个数为整数部分的值加1。如果小数部分的值小于或者等于0.1,系统默认剩余容量不计入,切分个数为整数部分的值。例如:SSD设备容量GB/实际切分容量值为3.2时,切分个数位4。 SSD设备容量GB/实际切分容量值为3.1时,切分个数为3。

    当使用磁盘做主存时,占用内存为N × 该服务器磁盘个数
    其中,“N” 根据网络和磁盘的不同,取值如下:

    • 使用IB网络时,根据单个磁盘容量的不同,取值如下:
      • 容量≤ 2T: N=2.4GB
      • 容量>2T时,容量每增加2T, N的取值增加1GB。 例如: 2T< 容量≤ 4T时,N=3.4GB; 4T< 容量≤ 6T时, N=4.4GB。
    • 使用10GE网络时,根据单个磁盘容量的不同,取值如下:
      • 容量≤ 2T: N=2GB
      • 容量>2T时,容量每增加2T, N的取值增加1GB。 例如: 2T< 容量≤ 4T时,N=3GB; 4T< 容量≤ 6T时, N=4GB。

    缓存占用内存容量:当缓存采用NVDIMM或者不使用缓存时,内存占用容量为0;当
    缓存采用SSD卡或者SSD盘时,内存占用为(该服务器SSD缓存总大小GB× 8)/1024
    其中, SSD缓存总大小的单位为GB。

    例如,10GE组网场景下,系统规划创建2个存储池,服务器操作系统占用内存为8G, 使用2T的SATA盘做为数据盘(有4块数据盘),使用1块2.4T的SSD卡做缓存,则内存应设置为:
    操作系统占用8GB + MDC进程占用5GB + VBS进程占用8GB + OSD进程占用2GB×4 + 缓存占用(2.4× 1024GB× 8)/1024 = 48.2 GB

    网络

    计算节点:

    • 物理服务器网卡支持单网口(eBackup节点, CVM节点等需要使用单网口)和配置activebackup(Bond模式为1)模式的网口聚合。
    • 10GE组网时,硬件至少为210Gb组网,其中至少26Gb用于存储平面。
    • 网卡和网络类型:GE(TCP/IP协议)、10GE(TCP/IP协议)、40GbIB(RDMA协议)、56Gb IB(RDMA协议)、10GE/25GE RoCE(RDMA协议)。
    • 建议网络时延小于1ms, 丢包率小于3%。

    存储节点:

    • 物理服务器网卡要求配置网口聚合(Bond),模式为active-backup(Bond模式为1)。
    • 10GE组网时,硬件至少为210Gb组网,其中至少26Gb用于存储平面。
    • 40Gb/56Gb IB组网时,带宽共享皆可满足要求。
    • 网卡和网络类型: 10GE(TCP/IP协议)、 40Gb IB(RDMA协议)、56GbIB(RDMA协议)、10GE/25GE RoCE(RDMA协议)。
    • 使用机柜级安全时,机柜间至少为410Gb带宽,每服务器至少为210Gb带宽,其中存储平面至少2*6Gb及以上带宽。
    • 建议网络时延小于1ms, 丢包率小于3%。

    系统盘

    系统盘配置RAID1

    FusionStorage Manager配置要求

    FSM配置要求

    组网配置

    FusionStorage网络平面

    • 管理平面
      FMS与FSA通信的平面
    • 存储平面
      OSD、MDC以及VBS之间所通信使用的平面
    • 业务平面
      VBS对外提供业务的时候,所使用的平面
      FusionStorage网络平面

    以太网组网

    以太网组网

    FusionStorage Infiniband组网介绍

    • 数据库和数据仓库场景下,数据库和数据仓库单独部署在作为计算节点的物理服务器上,运行企业关键数据库、数据仓库、关键ERP/CRM等应用,推荐使用40G/56G Infiniband组网。
    • 每服务器配置双端口IB网卡,两个IB网口配置为主备bond,分别连接到两块IB交换机(板) 。
    • 每框(柜)的两块IB交换机(板)之间不配置主备,也不配置堆叠,各自独立 。
    • 汇聚框(柜)与扩展框(柜)之间的IB 交换机(板)通过IB线缆连接,不用配置trunk 。
    • IB连线规则:
      扩展框(柜)的存储带宽要大于等于计算框(柜)的输出带宽,尽量发挥存储框的带宽。

    Fusion Storage IB组网介绍

    配置规格及约束

    FusionStorage难点!

    FusionStorage ZK盘配置原则

    ZK盘:存放元数据的盘,可以使用普通的机械磁盘,也可以使用SSD磁盘,也可以使用SSD卡的分区。
    ZK盘的配置原则如下:

    • 32台服务器内,默认选择3个独立的ZK盘(HDD)
    • 32~128台服务器内,默认选择5个独立ZK盘(HDD)
    • >128台服务器,默认选择5个独立ZK盘(SSD)
    • SSD卡主存时3个ZK分区

    FusionStorage MDC配置原则

    • MDC部署在3个以上节点上(默认3节点),形成MDC集群
    • MDC进程需要占用独立的存储空间,该空间称为ZK
    • 将系统分区分给ZK使用(全SSD卡),该分区称为ZK分区,即和OS盘合布, ZK分区大小为60G, ZK分区部署时,不能和管理节点OS盘合布。此部署方式需要整个系统规模为5或以上服务器
    • 将单个磁盘分给ZK使用,该磁盘称为ZK盘,即在部署MDC的服务器中,划⼀块硬盘来独立部署,此时会占用⼀个数据盘槽位。但是使用独立ZK盘的性能和可靠性要优于ZK分区

    FusionStorage配置约束

    主存:一台服务器上加入分布式存储资源池的磁盘。
    单服务器内总主存数量: 3~36盘/卡。单台服务器上每资源池主存数3-12(2副本)/36(3副本)。单资源池两副本情况下最大96块盘(SAS / SATA/ NLSAS/SSD盘/SSD卡)。三副本情况下最大为2048块盘或者SSD卡 。

    每台服务器内每资源池Cache介质数量: 0~4,并且小于硬盘/主存介质数量, 集群内初始各服务器间Cache介质数量可不⼀样;但同⼀资源池内初始各服务器间Cache介质数量必须⼀样。

    服务器内硬盘/主存类型可不⼀样,每⼀种硬盘/主存类型都可划分到不同资源池,比如SATA划个池、 SSD盘划个池、 SSD卡划个池;但资源池内各服务器间硬盘/主存类型必须⼀样。

    资源池内初始各服务器间硬盘/主存数量可不一样,可以相差1-2个,但相差2个时,最多相差小于等于30%比例(如6个盘,⼀个是4个盘,相差比例为33%,超过了30%,则不能组成资源池,如果是8个和6个则可以)。

    服务器内硬盘/主存大小可以不⼀样,大小不一(类型形同)的硬盘/主存,可以划入同⼀个资源池,但只能大的当小的用。

    每个节点上的存储网络配置要保持⼀致。

    FusionStorage支持的主存类型: SATA/NLSAS盘SAS盘SSD盘以及SSD卡
    从IO性能看, SSD卡>SSD盘> SAS盘>SATA/NLSAS盘
    从每GB成本看, SSD卡>SSD盘>SAS盘> SATA/NLSAS盘
    Cache类型的选择: No Cache、 SSD盘和SSD卡(华为推荐)、 NVDIMM(特殊的插在内存上的缓存)
    No Cache指的是没有Cache加速,原则上仅在SSD盘或者SSD卡做主存情况下采用
    SSD盘/SSD卡在SAS盘或者SATA/NLSAS盘做主存情况下使用
    NVDIMM跟服务器硬件紧耦合,当前仅在华为E9000系列服务器和RH2288H服务器中支持,原则上也仅在SSD盘或者SSD卡做主存情况下采用,不推荐使用
    从Cache时延看, NVDIMM<SSD卡<SSD盘
    单部件容量看, SSD卡>SSD盘>NVDIMM, Cache容量越大,加速性能会越好
    ⼀般情况下默认采用SSD卡做Cache
    存储网络类型的选择:万兆或者千兆以太网络(10GE/GE) 和IB网络

    FusionStorage有效容量及性能估算

    • 单盘或卡的有效容量(TB) = (z/(1.024^4)-p*r/1024)*q/k
      Z=盘或SSD卡标称容量(TB) , z为GB时,需转换为TB(GB/1000)
      r= FusionStorage OSD开销(GB)
      P=主存对应的OSD进程数, HDD和SSD盘, 1个硬盘上运行的OSD进程数为1; SSD卡,不同的卡进程数不同
      k=副本数
      q=磁盘空间利用率
    • FusionStorage有效容量=单盘或卡的有效容量*总盘或卡数
    • 项目所需的总盘数=roundup(有效容量总需求/单盘或卡的有效容量,0)
    • FusionStorage总IOPS=单主存性能值*主存数量

    例如,⼀共配置20台服务器,每台配置了12个4T SATA盘,这些盘都用于FusionStorage的数据盘, 3副本,磁盘利用率取0.95。则单盘有效容量=(4/(1024^4) -120.7/1024))0.95/3=1.15T, 总有效容量=20121.15=276TB; 反过来,如果需要配置200TB的有效容量,则需求的4TB盘数量:硬盘数量=roundup(200/1.15,0) =174个,如果每个服务器配置12个4TB盘,则服务器数量=roundup(174/12,0) =15台。

    • 如某主存单IOPS=510, 主存数量36,则FusionStorage总提供IOPS=510*36=18360。
    展开全文
  • Microsoft SQL Server是Microsoft开发的关系数据库管理系统。 作为数据库服务器,它是一种软件产品,其主要功能是根据其他软件应用程序的请求来存储和检索数据,这些软件可以在同一台计算机上运行,​​也可以在...
  • 主要作用是管理共享资源的并发访问 锁用于实现事务的隔离性 锁的类型 共享锁(也称读锁),针对同一份数据,多个读操作可以同时进行而不会互相影响 独占锁(也称写锁),当前写操作没有完成前,它会阻断其他写锁和读锁 ...

    MySQL5.5之前的版本默认存储引擎

    MyISAM存储引擎表由MYD(数据文件)和MYI(索引文件)组成

    什么是锁?

    锁主要作用是管理共享资源的并发访问

    锁用于实现事务的隔离性

    锁的类型
    共享锁(也称读锁),针对同一份数据,多个读操作可以同时进行而不会互相影响
    
    独占锁(也称写锁),当前写操作没有完成前,它会阻断其他写锁和读锁
    
    锁的粒度
    表级锁
    
    行级锁
    
    MyISAM存储引擎特性

    1.并发性与锁级别

    2.表损坏修复

    3.MyISAM表支持数据压缩

    myisampack -b -f myIsam.MYI
    
    MyISAM存储引擎限制
    • 版本 < MySQL5.0时默认表大小为4G,如存储大表则要修改MAX_Rows和AVG_ROW_LENGTH
    • 版本 > MySQL5.0时默认支持256TB
    适合场景
    1.非事务型应用
    
    2.只读类应用
    
    3.选择密集型、插入密集型
    
    展开全文
  • MyISAM 存储引擎

    2019-12-23 13:58:33
    数据库优化 学习笔记 一、MySQL引擎 之 ...锁主要作用是管理共享资源的并发访问 锁用于实现事务的隔离性 1.2、锁的类型 共享锁: 也称 “度锁”,针对同一份数据,多个读操作可以同时进行而不会互相影响...

    数据库优化 学习笔记

    一、MySQL引擎 之 MyISAM

    • MySQL5.5 之前的版本默认存储引擎
    • MyISAM存储引擎表由 frm(表结构文件)、MYD(数据文件) 和 MYI(索引文件)组成

    1.1、什么是锁

    • 锁主要作用是管理共享资源的并发访问

    • 锁用于实现事务的隔离性

    1.2、锁的类型

    • 共享锁: 也称 “度锁”,针对同一份数据,多个读操作可以同时进行而不会互相影响

    • 独占锁: 也称 “写锁”,当前写操作没有完成前,它会阻断其他 写锁读锁

    1.3、锁的粒度

    • 表级锁: 设置表级锁,那么当一个用户在对表进行操作时,其他用户不能做任何操作。

    • 行级锁: 设置行级锁,那么当一个用户在对一行数据进行操作时,其他用户不能对该行数据进行操作,但可以对比表中的其他数据进行操作。并发性好



    二、MyISAM 存储引擎特性


    2.1、并发性和锁级别

    • 并发性: MyISAM 存储引擎使用的是表级锁,并发行不怎么好。

    • 锁级别: 表级锁。

    2.2、表损坏与修复(了解)

    • 检测表是否损坏
    	check table 表名;
    
    • 修复表
    	repair table 表名;
    

    2.3、MyISAM 表支持数据压缩(了解)

    	-- '-f' 表示强制压缩
    	-- 'myIsam.MYI' 要压缩的文件
    	myisampack -b -f myIsam.MYI 
    



    三、MyISAM 存储引擎限制


    3.1、版本限制

    • 版本 < MySQL5.0 时默认表大小为4G,如存储大表则要修改 MAX_RowsAVG_ROW_LENGTH
    	最大可存储数(行数) = MAX_Rows * AVG_ROW_LENGTH
    
    • 版本 > MySQL5.0 时默认支持 256TB

    3.2、适用场景

    1. 非事务型应用

    2. 只读类应用(因为它比较快)

    展开全文
  • 模仿emby功能的,BS模式的本地影视管理工具撰写的作者以自己的理解摸索实现一个模仿emby 。 Swellow的名称来自《精灵宝可梦》中的“傲骨燕/大王燕”。 2实现功能 2.1影视信息收集存储 2.1.1元数据来源 爬虫 从有...
  • SAN方案必须提供自管理能力,尤其在错误恢复、数据可用性以及性能管理方面,纠错和失败恢复也是企业存储的关键问题,RAID使存储管理员从由于硬盘失败而引起的数据丢失的担心中解脱出来。自动的负载平衡减轻了对存储...
  • 在此存储库中,您将找到一些Phaser 3示例。 为什么还要另辟examples径? ,但是这些示例中没有很多解释性注释。 因此,这些示例有望弥补新手程序员使用Phaser开发游戏时可能遇到的差距。 这些示例尽可能建立在早期...
  • 在应用机制上沿用了B/S C/S混合应用模式,在功能上主要提供了前台访问、存储、后台管理、个人中心、开发接口等模块,帮助客户实现E-FILE的集中存储、有效管理和可控应用。 前台访问支持简单登陆和传统首页模式,在...
  • NAS设备主要用来实现在不同操作系统平台下的文件共享应用,与传统的服务器或DAS存储设备相比,NAS设备的安装、调试、使用和管理非常简单,采用NAS可以节省一定的设备管理与维护费用。NAS设备提供RJ-45接口和单独的...
  • Etcd是一个分布式的,一致的key-value存储主要用于共享配置和服务发现。Etcd是CoreOS开发并维护,通过Raft一致性算法处理日志复制以保证强一致性。Raft是一个来自Stanford的新的一致性算法,适用于分布式系统的...
  • 什么必须管理内存 内存管理是计算机编程最为基本的领域之一。在很多脚本语言中,您不必担心内存是如何管理的,这并不能使得内存管理的重要性有一点点降低。对实际编程来说,理解您的内存管理器的能力与局限性至...
  • Louis主要的兴趣领域是数据库架构和用T-SQL编码,并且,他设计过许多数据库,在这许多年中编写过数以千计的存储过程和触发器。  Scott Klein是一位独立咨询师,对SQL Server、.NET和XML相关的所有知识都充满热情。...
  • Louis主要的兴趣领域是数据库架构和用T-SQL编码,并且,他设计过许多数据库,在这许多年中编写过数以千计的存储过程和触发器。  Scott Klein是一位独立咨询师,对SQL Server、.NET和XML相关的所有知识都充满热情。...
  • 编译原理及实现

    2014-06-27 00:09:35
    1.1 为什么要用编译器 2 1.2 与编译器相关的程序 3 1.3 翻译步骤 5 1.4 编译器中的主要数据结构 8 1.5 编译器结构中的其他问题 10 1.6 自举与移植 12 1.7 TINY样本语言与编译器 14 1.7.1 TINY语言 15 1.7.2 TINY...
  • 1、内存管理基础知识(指令工作原理、地址转化、程序运行过程)思维导图什么是内存?指令的工作原理装入模块的三种实现绝对装入可重定位装入动态重定位程序的运行过程链接的三种方式 思维导图 什么是内存? 内存...
  • 什么是Zookeeper Zookeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group ...
  • etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现。etcd是CoreOS开发bai并维护的,灵感来自于 ZooKeeper 和 Doozer,它使用Go语言编写,并通过Raft一致性算法处理日志复制以保证强一致性。Raft是一个...
  • 4.1.6 文件系统基础

    2016-07-04 23:13:47
    (1)什么是文件?什么是文件系统? 文件是以计算机硬盘为载体存储在计算机上的信息集合,它的形式很多样化,可以是文本文档、图片、程序等。...对于用户而言,文件系统最主要的功能就是实现对文件的
  • 域(Doamin)是活动目录中逻辑结构的核心单元,一个域包含许多台计算机,它们由管理员设定,共用一个目录数据库。一个域有一个唯一的名字,给那些管理员集中管理的用户账号和组账号提供访问通道。 " t9 D5 }8 f9 S...
  • 而企业面向的是企业内部的所有员工,可以能涉及到多人协作等,分享上也会相对严谨许多,会划分出多个权限等级,统一由管理员分配,同时还会分为内部共享和外部分享等;接着就是协作上,除了可以实现文件在线多人编辑...
  • 扩展机制等功能,利用Kubernetes能方便地管理跨机器运行容器化的应用,其主要功能如下:1) 使用Docker对应用程序包装(package)、实例化(instantiate)、运行(run)。2) 以集群的方式运行、管理跨机器的容器。3) 解决...
  • 信息系统是一个人造系统,它人、计算机硬件、软件和数据资源组成,目的是及时、正确地收集、加工、存储、传递和提供决策所需的信息,实现组织中各项活动的管理、调节和控制。 35.原型法的基本思想是:开发者和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 427
精华内容 170
关键字:

存储管理主要由什么实现