SQL Server Mobile/Compact 艾德ition 简单介绍澳门美高梅手机网站

除了SQL Server Express,SQL Server还有个更轻量级的本子:SQL Server
Compact Edition,简单令人回想Windows Compact 艾德ition (Windows CE)。

9. 存储

9. 存储…
1

九.一 存款和储蓄引擎…
1

玖.一.一 WiredTiger存款和储蓄引擎…

玖.一.1.壹 文书档案级别并发…

9.一.一.2 快速照相和检讨点…
2

9.1.1.3 Journaling.
2

9.1.1.4 压缩…
2

玖.1.一.伍 内部存款和储蓄器使用…

玖.壹.2 MMAPv一储存引擎…
4

9.一.3 In-Memory存款和储蓄引擎…
4

9.2 Journaling.
4

9.2.1 Journaling和WiredTiger引擎…
4

9.2.2 journal和MMAPv1引擎…
5

玖.2.3 Journal和in-memory存款和储蓄引擎…

 

那一个版本的SQL Server唯有一个.sdf数据文件 (是或不是想到了Access,
SQLite那类数据库),首要适用于:桌面程序 (也正是单机程序),移动装备程序
(手机,平板),嵌入式程序等,须要轻量级数据库的风貌。

九.1 存款和储蓄引擎

仓储引擎是数据库的二个零件用于管理数据存款和储蓄。Mongodb帮忙多囤积引擎,不一致的蕴藏引擎对于钦命负荷恐怕会有更加好的属性。

WiredTiger在Mongodb
3.二之后作为默许的存储引擎,能够很好的适应很多载重。WiredTiger提供文书档案级别的面世模型,检查点,压缩,和别的特色。

MMAPv1是Mongodb老的仓库储存引擎在mongodb 叁.二在此以前是默许的仓库储存引擎。

In-Memory Storage Engine在Mongodb 公司版可用。和别的部存款和储蓄器储引擎差别数额是存放在在内部存款和储蓄器裁减数量延迟。

 

9.壹.一 WiredTiger存款和储蓄引擎

从3.0起来已经在60位系统上可用。

在三.贰本子中WiredTiger存款和储蓄引擎为暗中认可存款和储蓄引擎。若是未有点名–storageEngine可能storage.engine会自动决定期存款款和储蓄引擎的使用并且存放在storage.dbPath下。

一. 打开/创立数据库

玖.一.一.一 文书档案级别出现

WiredTiger使用文书档案级别并发控制写入操作。那样八个客户端可以同时对两样的文书档案实行改动。对于众多读写操作WiredTiger使用最优的面世控制。WiredTiger在大局,数据库,collection上行使意向锁。当存储引擎发现一个争辨操作,三个操作会出现写入重提,供给出示的重试这几个操作。

1对大局操作,日常执行时间短的关联到多个数据库的,照旧会采纳全局锁。对于drop
collection依然会有数据库x锁。

1. SQL Server 2005,在SSMS中新建数据库连接,选取 SQL Server
Mobile,钦命文件路径即可;

九.一.1.2 快速照相和检查点

WiredTiger使用多版本出现控制(MVCC),在操作以前,WiredTiger提供一个数据快速照相。快速照相表示内部存款和储蓄器数据库的窗口。

当写入磁盘,WiredTiger写入全部的快速照相中的数据到磁盘。新的定势数据被视作数据文件的checkpoint。

MongoDB在每60秒大概二GB journal数额创造checkpoint。

当在开立异的检查点,老的检查点照旧可用。如若MongDB在写入checkpoint的时候产生错误大概暂停,MongoDB能够应用最终一次有效的checkpoint。

当WiredTiger元数据表自动更新引用新的检查点,新的检查点变成可用,并且持久。一旦新的checkpoint可用,老的checkpoint就被放飞。

即使未有打开journaling,mongodb会从最后2次checkpoint苏醒,checkpoint之后的东山再起须求选拔journaling。

2. SQL Server 2008/2008 R2,在SSMS中新建数据库连接,选取 SQL Server
Compact,钦命文件路径即可,如下图;

9.1.1.3 Journaling

WiredTiger使用日志先行合作checkpoint来保险数据持久性。WiredTiger journal记录了checkpoint之间的数目修改。即使MongoDB在1次checkpoint之间退出,mongodb会动用journal来重放最终一遍checkpoint之后全部的改动。

WiredTiger使用snappy压缩journal。能够内定其余的削减方法,也许不优惠扣,能够使用storage.wiredTiger.engineConfig.journalCompressor来安装。

 

Note:WiredTiger最小的日记记录是12八 bytes,假诺低于12捌 bytes,那么就不会收缩记录

 

也得以向来关门journal收缩对journal的护卫,storage.journal.enabled=false。若是是单实例,不利用journal就意味着会丢掉修改的数据,尤其是mongodb在checkpoint之间不得预言的淡出。对于复制集,复制进度能够知足持久性需要。

 

 澳门美高梅手机网站 1

9.1.1.4 压缩

应用WiredTiger,MongoDB补助对持有collection和index 进行压缩。压缩能够减小存款和储蓄的采纳不过会开销一点cpu。

暗中同意,WiredTiger使用块压缩,使用snappy压缩方式减弱全数collection,对持有索引使用前缀压缩。

对此collection,块压缩也能够行使zlib。

设置storage.wiredTiger.collectionConfig.
blockCompressor。

对此index,撤消前缀压缩,storage.wiredTiger.indexConfig.prefixCompression

缩减设置能够在种种collection或许索引上在创制时设置。对于众多载重暗中认可压缩设置平衡了储存效用和处理供给。

3. SQL Server 2012开始,在SSMS中不再辅助SQL Server
Compact,转而在Visual Studio中帮忙,也便是稍微开发人士所说的Visual
Studio中的 localDB/local database。

九.一.一.5 内部存款和储蓄器使用

利用WiredTiger,MongoDB利用了Wired泰格的cache和文件系统的cache。在三.2过后,WiredTigercache私下认可为一下2个大的一个:

壹.3/5的内部存款和储蓄器减去一GB

2.1GB

对此过量10GB的内存,新的暗中认可设置会比3.0据为己有越多内部存款和储蓄器。对于文件系统缓存,MongoDB自动使用空闲的内存。数据在文件系统cache是被减少的。

能够因而配备storage.wiredTiger.engineConfig.cacheSizeGB来调动WiredTiger内部存款和储蓄器大小。

单机械修理改存款和储蓄引擎到WiredTiger

考虑:修改存款和储蓄引擎使用mongodump和mongorestore工具来导入导出多少。保障这个工具已经安装了。其它保障有丰富的长空用于导入导出。为了能够利用WiredTiger必须选取叁.0之上版本的MongoDB。

过程

壹.起初mongod,假如已经运行跳过

2.使用mongodump导出

叁.创设三个数据库目录用于新本子的mongodb运营

4.启动带WiredTiger的MongoDB

5.选择mongorestore来过来数据。

 

修改复制集到Wired泰格

考虑:对于复制集有成员利用不一致的贮存引擎。那么你能够以滚动的诀要挨个修改到WiredTiger。在全部修改到WiredTiger从前,最棒使用混合的仓库储存引擎格局运转一段时间。

过程

1.关闭该secondary成员,db.shutdownServer()

贰.预备三个有WiredTiger的MongoDB创设三个数据库目录

三.开发银行带WiredTiger的MongoDB,因为从没数据,mongod会执行初步化同步,初步化时间取决于数据库的轻重缓急和网络连接。

四.双重以上进度,修改全部secondary

 

修改shard集群的仓库储存引擎到WiredTiger

考虑:这么些进度恐怕会有底线时间,越发是二个还是多少个shard是单机的。假诺改动shard的host和端口,就非得去修改shard配置。

过程

一.停用均衡器

2.停歇第多个config
server保险元数据是只读的。

3.导出第四个config
server的数额

4.对于第一个config服务,创制二个新的数据目录,给wiredtiger使用

伍.停下第一个config服务

⑥.运转带wiredtiger的mongodb启动在其次个config服务上。

七.导入在此以前导出的数目

捌.关门第一个config服务,有限支撑元数据只读

九.起动首个config
server服务,并按三-7步骤执行

10.对此第贰个config
server,并按三-7手续执行

11.初叶第二个config
server

1二.开行均衡器

切实可参见MSDN:

玖.1.二 MMAPv一囤积引擎

具体看:https://docs.mongodb.org/manual/core/mmapv1/

Visual Studio 2012
https://msdn.microsoft.com/en-us/library/bb546200(v=vs.110).aspx

九.1.③ In-Memory存款和储蓄引擎

具体看:https://docs.mongodb.org/manual/core/inmemory/

Visual Studio 2013
https://msdn.microsoft.com/en-us/library/vstudio/ms233763.aspx

9.2 Journaling

 

9.2.1 Journaling和WiredTiger引擎

Wired泰格使用checkpoint来提供内部存款和储蓄器和磁盘上的壹致性数据窗口,允许MongoDB从而今的checkpoint苏醒。如果mongodb出现卓殊退出,那么journaling会被用来平复数据。

journal复苏数据经过:

一.翻看数据文件找到最终一回checkpoint标示

二.在journal文件中追寻相称最终一遍checkpoint

3.从最后三次checkpoint开首选择journal文件

 

journal过程

当运转Journal,WiredTiger为每个客户端的写入记录一条日志。内部修改操作也会记录日志。比如update了2个文书档案大概会导致索引修改,WiredTiger会成立一个日记记录当中囊括文书档案和有关索引的修改。

MongoDB为WiredTiger创造了journal记录的cache。线程协调的分红和复制本身某些的buffer。全体journal记录最多128KB的buffer。

在以下情况下WiredTiger同步journal buffer:

1.每50毫秒

贰.MongoDB生出checkpoint,checkpoint每60秒只怕journal数据达到二GB。

三.假诺写入操作敏感为j:true,WiredTiger强制同步journal文件

四.因为mongodb使用journal文件最多为100MB,当Wired泰格创造新文件时,同步从前文件的缓存。

 

Journal文件

对此journal文件,MongoDB创制3个子目录journal在dbpath上边。WiredTigerjournal文件被指令为Wired泰格Log.<sequence>,<sequence>会用0填充。

各种写入操作有二个笔录,每种记录包蕴唯壹的识别符。

MongoDB使用snappy压缩journal数据。

细微的WiredTiger的日记为12八字节,借使低于就不再压缩。

WiredTiger的journal文件最大范围为十0MB,一旦当先会创设3个新的journal文件。

Wired泰格会自动删除来的journal文件,只珍惜近来checkpoint以来的journal文件。

WiredTiger会预分配journal文件。

二. 意义匡助

9.2.2 journal和MMAPv1引擎

运用MMAPv一,当写操作发生,MongoDB更新内存窗口。若是开发银行了journal,MongoDB会先把内部存款和储蓄器修改记录到journal文件。假如MongoDB在付出数据修改前发出搁浅只怕出现错误,MongoDB能够行使journal文件,维护数据一致性。

 

journal过程

MongoDB存款和储蓄引擎层有三个里头数据的窗口,Private view用来写入到,shared
view用来写入到数据文件。

一.MongoDB先把修改数据写入到private view

贰.MongoDB然后把这个改动写入到journal文件上,差不多十0纳秒一遍。MongoDB以组提交的不二等秘书籍啊那些改动写入到文件。组提交能够最小化质量影响。写入到文件炒作是原子的,保险journal文件的一致性。也能够由此storage.journal.commitIntervalMs来设置。

三.journal提交完之后,MongoDB把修改写入到shared view

四.最终,MongoDB把在shared view上的改动应用到数据文件上。暗许使用间隔是60s。操作系统也足以选拔比60s频率越来越高的,尤其是可用内部存款和储蓄器低的场馆下。能够由此安装参数来决定刷新频率,storage.syncPeriodSecs。

假如MongoDB
crash未有写数据文件,jrounal会以回放这个改动到shared
view最终写入到数据文件。

1经journal操作使用到了shared
view并且刷新到了磁盘,MongoDB必要超重系统再次remap到private view,介绍内部存款和储蓄器使用。

 

Journal文件

当运行了journal,MongoDB在dbpath下创制多个子目录journal。

Journal文件蕴涵日志先行的,各样journal项描述了data file中的修改。Journal文件是增多日志的。当journal文件有1GB的数码,MongoDB会创设多少个新的journal文件。假诺应用了storage.smallFiles选项那么各样文件的轻重缓急被限制为12八MB。

Lsn文件包括最终二遍mongodb刷新到数据文件的岁月。

假使mongodb应用了装有有个别journal文件到数据文件,那么那个文件就足以被引用。

只有你每秒写入一些字节,journal目录只要二,一个journal文件。

干净关闭删除全数journal目录的公文。Crash的话journal目录就有文件,当下次开端的时候能够自动苏醒。

 

Journal目录

为了保障书序写入的,最棒能够把数据文件和journal目录放在区别的文件系统下。

 

预分配

mongodb能够预分配journal文件,尤其是当mongod进度觉得预分配会比成立新的个更急速的时候。

基于文件系统,能够在率先次开行mongod,启用了journal的时候显得的预分配。预分配恐怕相比花时间。

意义上限定很多,数据库对象也很平淡,如下图,是3个刚创制的SQL Server
Compact 实例上独具的目的:

玖.2.3 Journal和in-memory存储引擎

具体看:

https://docs.mongodb.org/manual/core/journaling/#journaling-and-the-in-memory-storage-engine

 

 澳门美高梅手机网站 2

一.
数据库对象很少
,仅帮助自定义表,不帮忙自定义视图/存款和储蓄进度/函数/触发器
等等;

二. 数据类型有限,比如:字符型仅协理NCHAMurano, NVAEnclaveCHALX570;

3. 主干SQL语法有限制,比如:不帮衬count(distinct)、having 引用多列;

四. 高等SQL语法大约都不匡助,比如:CTE、APPLY、MERGE 等等;

实际可参见MSDN:https://msdn.microsoft.com/en-us/library/bb896140(v=SQL.100).aspx

 

综上:如今供销合作社内部的某小程序,有人用到了,感觉十二分便利,假使对数据库组件没太多必要,不要紧1试。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注