精华内容
下载资源
问答
  • Hibernate一级缓存和二级缓存【内附二级缓存数据存储结构】
  • CloudStack的管理的存储按...值得提的是,这里的主存储并不是指我们平时说的主存(RAM),它说Storage而不是Memory,可以理解为说硬盘,主存储和二级存储仅仅是存放的文件类型不同,使用的存储设备的类型是一样的。 ...

    CloudStack的管理的存储按用途分为主存储(Primary Storage)和二级存储(Secondary Storage),主存储用来存储虚拟机的卷,二级存储用来存放虚拟机的模板,ISO镜像和快照。值得一提的是,这里的主存储并不是指我们平时说的主存(RAM),它是Storage而不是Memory,可以理解为是硬盘,主存储和二级存储仅仅是存放的文件类型不同,使用的存储设备的类型是一样的。

    主存储

    当我们创建一台虚拟机时,需要为它指定至少一个卷(Volume),对于虚拟机来说,一个卷就相当于一个硬盘。在CloudStack中,虚拟机的卷被存放在主存储中:
    这里写图片描述

    如上如所示,在CloudStack中 ,主存储有两种:本地存储(Local)和共享存储(Shared)。本地存储在宿主机上,所以当虚拟机的卷使用本地存储时,只能被和它处于同一宿主机的虚拟机访问,而使用共享存储时,任意一台宿主机只要能访问该存储,宿主机上的虚拟机也就能访问该存储,也就是说该存储是被多台宿主机上的虚拟机共享的。

    虚拟机迁移

    当虚拟机使用共享存储时,虚拟机可以在线迁移到其他宿主机上,因为虚拟机本质上只是一个进程,只需要把该进程复制到另外一台可以访问它的卷的宿主机上,即可完成虚拟机的迁移。但使用本地存储的虚拟机无法实现在线迁移,因为其他宿主机无法访问该虚拟机位于本地存储上的卷,如图所示,我们将虚拟机VM3从Host1迁移到Host2:
    这里写图片描述

    卷迁移

    在CloudStack中,使用本地存储的虚拟机不仅虚拟机本身不能迁移,虚拟机的卷也是不能迁移的,也就是说一旦创建虚拟机时选择了本地存储,那么这台虚拟机永远只会跑在同一台宿主机上,而它的卷也只能存放在该宿主机的本地存储上。但是使用共享存储的虚拟机的卷是可以迁移到其他共享存储上去的,如图所示,我们把卷4从共享存储1迁移到共享存储2
    这里写图片描述

    在实际生产中,我们并不能保证宿主机永远状态正常,因为种种原因宕机的情况也是难以避免的事,如果我们的虚拟机使用的是本地存储,那么一旦宿主机挂掉虚拟机也要跟着挂掉,如果宿主机的硬盘坏了有可能导致虚拟机的卷也丢失了,对于重要的业务,特别是单节点(没有启用主备)运行的业务,使用本地盘是比较危险的方式,更为保险的方式是使用共享存储,这样一旦宿主机挂掉可以快速地将业务迁移到其他可用的宿主机上,从而保证跑在云上的业务稳定运行。但使用本地存储也是有一定好处的,现在许多服务器的硬盘都是SSD盘,使用SSD盘做本地存储IO性能会好一些。所以当我们创建虚拟机时要根据我们的需求权衡一下利弊来选择虚拟机是使用本地存储还是共享存储。

    二级存储

    二级存储上存放的是ISO镜像,模板,快照。三者的作用分别如下:

    1. ISO镜像:就是操作系统的ISO文件,当我们创建虚拟机时,如果我们为虚拟机指定的是一个ISO镜像,那么当虚拟机启动时,就会进入操作系统的安装界面,按步骤安装完操作系统以后,下次启动虚拟机时就可以直接进入安装好的操作系统中了。
    2. 模板:使用ISO镜像时,每次创建一台虚拟机都需要安装一次操作系统,这显然效率低下,我们可以把安装完操作系统的虚拟机的卷作为模板上传上去,创建虚拟机时选择相应的虚拟机模板,创建出来的虚拟机就是安装好操作系统的,启动后可以直接进入操作系统。
    3. 快照:我们可以在任意时刻对虚拟机的卷拍摄快照,然后把快照做成自定义模板,通过自定义模板创建出来的虚拟机的卷和拍摄快照时的虚拟机的卷是一模一样的,我们可以通过这种方式在模板中预装好一些常用的软件或保存一些配置信息。

      三者的作用其实是类似,这里我们以模板为例,介绍一下创建虚拟机时模板的作用。我们知道,虚拟机要正常运行至少要有一个ROOT卷(卷分两种:ROOT卷和DATA卷),ROOT卷需要安装好操作系统,虚拟机启动时才能进入操作系统正常使用,那么这个ROOT卷是哪里来的呢?当我们在CloudStack创建虚拟机时,需要为其指定一个模板,虚拟机的ROOT卷就是通过从二级存储上复制这个模板到主存储上得到的,但一个主存储第一次使用一个模板时,模板会从二级存储上复制一份放到主存储上,以后这个主存储上的ROOT卷再使用这个模板时,就可以直接从主存储上拷贝,无需每次都去二级存储上拷贝,大体流程如下图所示:
      这里写图片描述

    展开全文
  • CloudStack相关技术-主存储和二级存储

    千次阅读 2017-07-30 21:40:32
    存储存储和一个集群相关联,为集群中所有host上运行的虚拟机提供虚拟磁盘。在KVMVMware中,我们可以在zone范围提供主存储。 我们可以为集群(或zone)添加多个主存储服务器,但至少也要有个,一般它位于...

    主存储

    主存储和一个集群相关联,为集群中所有host上运行的虚拟机提供虚拟磁盘。在KVM和VMware中,我们可以在zone范围提供主存储。
    我们可以为集群(或zone)添加多个主存储服务器,但至少也要有一个,一般它位于hosts的附近来提高性能。CloudStack管理着客户虚拟磁盘到特定主存储设备的分配。
    如果需要避免额外的数据拷贝,使用基于zone的主存储是很有用的。使用基于集群的主存储时,主存储中的数据只有集群中的虚拟机能直接访问,如果另一个集群中的虚拟机需要这些数据,需要将数据从这个集群靠谱到二级存储,再从二级存储拷贝到另一个集群,这个操作是相当费时的。
    只有KVM管理程序支持Ceph/RBD 存储,它能用来作为基于zone的主存储。
    如果我们只是使用本地磁盘作为存储,那可以略过主存储的添加。

    二级存储

    二级存储用来存放:

    • 模板:OS的镜像,可以用来引导虚拟机以及添加额外的配置信息,不如安装的应用
    • IOS镜像:包含数据或操作系统启动介质的磁盘镜像(系统盘和数据盘)
    • 磁盘卷快照:保持虚拟机数据的拷贝,用于数据的恢复或创建新模板

    二级存储中的数据整个zone中的host的虚拟机都是可见的,也可以定义成整个region可见
    为了让hosts可以通过云来访问二级存储中的数据,我们除了添加基于zone的NFS二级存储之外还可以添加对象存储,这样就不用把模板和快照从一个zone拷贝到另外一个zone上了。
    CloudStack提供插件来支持openstack的对象存储(Swift)和Amazon Simple Storage Service (S3) 对象存储。当使用其中一种存储插件,我们就可以为整个CloudStack配置Swift或S3存储,然后为每个zone设置NFS二级存储.每个zone的NFS二级存储作为一个缓存区域,用来存放那些被发送到swift或S3之前的模板和其他二级存储数据。
    region不支持异构的二级存储方式。例如:不可以一个zone使用NFS二级存储,一个zone使用swift

    展开全文
  • 关于二级存储的三大误解

    千次阅读 2017-11-01 14:00:38
    随着混合云从种新的解决方案向标准的最佳实践方案的转变,二级存储也随之不断演变。通过备份归档保护非结构化数据对于企业至关重要,原因有很多,其中包括在最糟糕的情况下对知识产权实施保护。 无论是在生活...

    关于二级存储的三大误解

    随着混合云从一种新的解决方案向标准的最佳实践方案的转变,二级存储也随之不断演变。通过备份和归档保护非结构化数据对于企业至关重要,原因有很多,其中包括在最糟糕的情况下对知识产权实施保护。

    无论是在生活还是工作中,都要心怀希望,但也要对最坏的情况有所准备,这是非常明智的策略。 然而,很多企业却产生了这样一种思想误解,即从昂贵的初级存储卸载数据可节省大量资金,因而导致很多企业怀着谨慎的态度接近二级存储,反而失去了他们本应具备的热情。

    根据我的经验来看,有关二次存储的三大误解使企业与之带来的很多优势失之交臂。

    误解#1 - 最终用户不能(或不应该)参与数据存储决策

    在制定数据存储决策方面,很多企业没有利用那些最接近数据的业务用户的专业知识。因此,有时这些企业组织根本无法归档非活动数据,而将这些永远不会被访问的数据存储在价格昂贵,性能更高的存储器上。

    然而,其他一些企业试图自动化数据存储政策,以实现性能存储。但是他们的自动化策略要么过于保守而无法实现理想的成本节省,要么就太过于激进,混淆了用户和应用程序。

    即使企业意识到了在数据存储方面与业务用户合作的价值,但他们还是会受到不便于最终用户使用的复杂存储系统的限制。

    然而这些原因不应该成为企业卸载数据并将之存储到二级存储器中以节省成本的障碍。更多文章请阅读:美国VPS主机cn.bluehost.com

    根据专家对存储数据的研究,在为企业做出正确的决策方面,最终用户是非常宝贵的合作伙伴。因为他们了解哪些数据可以被归档,哪些数据应该保留在主存储上。让最终用户参与到决策制定中可以为您带来巨大的回报。

    误解#2 - 存档数据永远消失

    IT专业人员给数据归档起了一些绰号,比如巨大的虚空、黑洞、大深渊,但是无论是什么名称,都表明了IT人士对“一旦数据需要从备份媒体“恢复”,就说明这些数据已经永远消失”的片面看法。

    大多数企业高管不关心备份或归档; 他们只关心访问和恢复。

    举例来说,我们的一个客户 - 大型硅谷软件供应商,经常保存客户创建的文档,以便在更高性能的主存储中重现软件缺陷。其原因是,该公司需要偶尔访问并恢复这些数据,以验证尚未恢复的已知缺陷。

    传统的备份软件和磁带存档不具备数据恢复功能,因此企业将这些测试案例转移到成本较低的二级存储层,以便按需访问数据,并在必要时将数据还原到高性能主存储。

    如果没有办法恢复数据,那么归档数据会带来什么好处呢? 二级存储给人留下了黑洞的印象,难怪部分企业并没有归档大部分可以被归档的数据,而是购买更多的主存储量。

    但归档数据和访问数据不应相互排斥。 有效的存档解决方案必须提供快速恢复功能,这样一来IT和业务用户都可以自如地归档数据。

    误解#3-二级存储错综复杂

    由于主存储位于内部,二级存储通常涉及磁带归档、异地存储,甚至向其他数据中心和云的复制,因此企业可能会认为备份和存档比较抽象,而且管理起来更具挑战性。因此,当您考虑传统的二级存储系统时,将之视为非常复杂的存储器也不无道理。

    虽然主存储通常等同于企业数据中心内部的文件系统,但复杂的传统二级存储选项通常涉及多个系统,需要多个软件许可证,并将从磁带机器人和异地保管库服务到复制策略的所有功能一一列举出来。毫无疑问,这确实很复杂。

    相比之下,高效的现代二级存储解决方案消除了这种复杂性,使二次存储比主存储甚至更加简单。 而且还带来一种简单而无缝的用户体验,同样解决了所有二级存储中存在的难题,并消除筒仓,利用云端所带来的优势。

    我希望这篇文章能够消除您对二次存储的一些常见误解。 正如您不会根据打字机判断打字的复杂程度一样,如果您仅仅依靠传统的二级存储来判断备份和存档数据的难度,那么您将会错失数据存储机会。

    展开全文
  • 区别一级缓存的作用域是一个sqlsession内;二级缓存作用域是针对mapper进行缓存. 一级缓存: 1、第一次发起查询用户id为1的用户信息,先去找缓存中是否有id为1的用户信息,如果没有,从数据库查询用户信息。得到...

    (镶嵌点:)Sqlsession(接口)的底层是hashmap存储,线程不安全,sqlsessionTemplate是其实现类线程安全的

    区别:一级缓存的作用域是一个sqlsession内;二级缓存作用域是针对mapper进行缓存

    一级缓存:

    1、第一次发起查询用户id为1的用户信息,先去找缓存中是否有id为1的用户信息,如果没有,从数据库查询用户信息。得到用户信息,将用户信息存储到一级缓存中。

    2、如果中间sqlSession去执行commit操作(执行插入、更新、删除),则会清空SqlSession中的一级缓存,这样做的目的为了让缓存中存储的是最新的信息,避免脏读。

    3、第二次发起查询用户id为1的用户信息,先去找缓存中是否有id为1的用户信息,缓存中有,直接从缓存中获取用户信息。

    小结:一级缓存时执行commit,close,增删改等操作,就会清空当前的一级缓存;当对SqlSession执行更新操作(update、delete、insert)后并执行commit时,不仅清空其自身的一级缓存(执行更新操作的效果),也清空二级缓存(执行commit()的效果)。

     

    二级缓存:

    不管是不是相同的session,只要mapper的namespace相同,可能共享缓存,要求:如果开启了二级缓存,那么在关闭sqlsession后(close),才会把该sqlsession一级缓存中的数据添加到namespace的二级缓存中。

    开启了二级缓存后,还需要将要缓存的pojo实现Serializable接口,为了将缓存数据取出执行反序列化操作,因为二级缓存数据存储介质多种多样,不一定只存在内存中,有可能存在硬盘中

    那么在同一个session下,执行同一个select语句时,Cache Hit Ratio [Mapper]: 0.0,二级缓存的命中率为0那?

    答:这里要讲解一下二级缓存的缓存什么时候存入了:只有当当前的session.close()时,该session的数据才会存入二级缓存.在同一session下时,肯定没有执行.close()关闭session,自然也就没有存入二级缓存.第二次执行却没有重新发送sql语句,是因为第二次调用的是一次缓存中的数据.

    如果想让二级缓存命中率不为0,需要先开启一个session,执行一个sql语句,然后关闭该session,然后在创建一个新的session,执行相同的sql语句,这时,二级缓存才会命中
     

    原文:https://blog.csdn.net/jinbaizhe/article/details/81158514(commit和close对二级缓存的影响)(很详细)

    原文:https://www.jianshu.com/p/2be932206c59(一级缓存和二级缓存的区别)

    原文:https://blog.csdn.net/scarecrow_fly/article/details/71440400(sqlSession和sqlSessionfactory和sqlSessionfactorybuilder的生命周期)

    展开全文
  • Mybatis的一级缓存和二级缓存详解

    千次阅读 多人点赞 2018-11-19 19:11:59
    注:本笔记是根据尚硅谷的MyBatis视频记录的 对于任何一个持久层框架,都有缓存机制;缓存在电脑中有一块真实的存储空间...关于Mybatis的一级缓存和二级缓存执行顺序具体可参考:Mybatis的一级缓存和二级缓存执行...
  • MyBatis一级缓存和二级缓存

    万次阅读 多人点赞 2018-09-05 22:44:30
    MyBatis自带的缓存有一级缓存和二级缓存 一级缓存 Mybatis的一级缓存是指Session缓存。一级缓存的作用域默认是一个SqlSession。Mybatis默认开启一级缓存。 也就是在同一个SqlSession中,执行相同的查询SQL,第一次...
  • 减少了出现行移动或者数据页分裂时二级索引的维护工作(当数据需要更新的时候,二级索引不需要修改,只需要修改聚簇索引,个表只能有个聚簇索引,其他的都是二级索引,这样只需要修改聚簇索引就可以了,不需要...
  • Hibernate一级缓存和二级缓存详解

    万次阅读 多人点赞 2014-10-14 09:02:38
    一、一级缓存二级缓存的概念解释 (1)一级缓存就是Session级别的缓存,一个Session做了一个查询操作,它会把这个操作的结果放在一级缓存中,如果短时间内这个 session(一定要同一个session)又做了同一个操作,...
  • MyBatis中的一级缓存和二级缓存介绍

    千次阅读 多人点赞 2017-06-13 20:07:22
    先说缓存,合理使用缓存是优化...一级缓存 一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构用于存储缓存数据。不同的sqlSession之间的缓存数据区域是互相不影响的。也
  • 一级缓存和二级缓存(面试题)

    千次阅读 2019-09-22 20:35:40
    一级缓存基于sqlSession默认开启,在操作数据库时需要构造SqlSession对象,在对象中有一个HashMap用于存储缓存数据。不同的SqlSession之间的缓存数据区域是互相不影响的。 一级缓存的作用域是SqlSession范围的,当在...
  • 目录 从使用直观感受上来看: 块级: 文件: 对象: 技术角度: ... 文件: ... 对象: ...生活中常见的块存储设备...从使用上来说,块级的存储如果是第次使用,那么必须需要进行次格式化的操作(其实不...
  • 一级指针和二级指针的理解总结

    千次阅读 多人点赞 2019-02-10 20:17:10
    一级指针 对于一级指针来讲, 我们再熟悉不过的应用就是修改实参的值 注意下方应用: #include <stdio.h> void changeValue(int* value); int main() { ...
  • 1.一级缓存和二级缓存的区别 一级缓存基于sqlSession默认开启,在操作数据库时需要构造SqlSession对象,在对象中有一个HashMap用于存储缓存数据。不同的SqlSession之间的缓存数据区域是互相不影响的。  一级缓存的...
  • 1)一级缓存: Mybatis的一级缓存是指SqlSession级别的,作用域是SqlSession,Mybatis默认开启一级缓存,在同一个SqlSession中,相同的Sql查询的时候,第一次查询的时候,就会从缓存中取,如果发现没有数据,那么就...
  • C++ 一级指针和二级指针

    千次阅读 2017-03-09 09:35:51
    一级指针就是指指针,就是内存地址,二级指针就是指向指针的指针,就是地址的地址:打个比方,你有一个箱子A(相当于代码中的变量a),里面有你要的东西(值4),你的钥匙1(相当于一级指针p)能打开箱子A,这把钥匙就是...
  • 二级缓存是SqlSessionFactory级别的缓存,同个SqlSessionFactory产生的SqlSession都共享二级缓存,二级缓存中存储的是数据,当命中二级缓存时,通过存储的数据构造对象返回。查询数据的时候,查询的...
  • 四小组第二次讨论报告 计算机三级存储体系 first ...二级缓存 L2CACHE 出现是为了协调一级缓存与内存之间的速度 二级缓存比一级缓存速度更慢 容量更大 主要就是做一级缓存内存之间数据临时交换的地方用 实...
  • Mybatis中有一级缓存和二级缓存,默认情况下一级缓存是开启的,而且是不能关闭的。一级缓存是指SqlSession级别的缓存,当在同一个SqlSession中进行相同的SQL语句查询时,第二次以后的查询不会从数据库查询,而是直接...
  • 二级页表分页存储需要目录页表数形象解释

    千次阅读 多人点赞 2020-02-18 15:50:39
    某计算机采用二级页表的分页存储管理方式,按字节编址,页面大小为1024B,每个页表项占2B,若逻辑地址空间的大小为 64K 个页面,则表示整个逻辑地址空间的页目录表中包含的表项的个数至 少为__128_____ 在解决这个...
  • 【MyBatis】查询缓存(一级缓存和二级缓存)

    万次阅读 多人点赞 2017-02-27 14:01:56
    一级缓存:是SQlSession级别的缓存。在操作数据库时需要构造SqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的SqlSession之间的缓存数据区域(HashMap)是互相不影响的。  二级缓存:是...
  • 一级缓存2.1 一级缓存的命中场景2.2 触发清空一级缓存2.3 一级缓存源码分析3 二级缓存3.1 二级缓存的设计3.2 二级缓存的使用3.3 二级缓存的命中场景3.4 二级缓存源码分析3.4.1 query查询操作。3.4.2 commit提交操作...
  • 一级缓存基于sqlSession默认开启,在操作数据库时需要构造SqlSession对象,在对象中有一个HashMap用于存储缓存数据。不同的SqlSession之间的缓存数据区域是互相不影响的。 一级缓存的作用域是SqlSession范围的,当在...
  • 在安装cloudstack7.4.13的时候,二级存储为空为难了我好久,终于搜到一点信息,好像是上传的模板要cloudstack的版本一致,开始用的是systemvmtemplate-4.11.0-kvm.qcow2.bz2,最后看了一下官方文档说是要用...
  • 传智课程学习笔记。 二级指针问题,
  • Java面试题 Mybatis中一级缓存 二级缓存的区别? 两者区别一级缓存的作用域是在SqlSession中,二级缓存的作用域是针对mapper做缓存。 一级缓存(本地缓存): 一级缓存是框架默认为我们开启的,我们不需要做任何...
  • Mysql的一级缓存和二级缓存的区别

    千次阅读 2020-06-20 10:16:46
    什么是缓存 将数据存放在程序内存中,用于减轻...■ 一级缓存的生命周期SqlSession一致 ■ 设置为SqlSession级别的缓存,当执行insert/update/delete操作或close之后,缓存清空; mysql 拿到一个查询语句后先看缓存,

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 820,475
精华内容 328,190
关键字:

一级存储和二级存储的区别