分手快乐 发表于 2015-1-16 22:28:18

MYSQL网站制作之在VB中紧缩ACCESS数据库

任何规模的组织都可能受益于外包服务,并在一个标准化和优化的平台上统一其数据库管理任务。基于其本身的特性,DBaaS提供了敏捷和高效的数据库服务,它可以支持多变的需求。假如您在Access数据库、Access项目中删除数据或工具,大概会发生碎片并招致磁盘空间利用效力的下降。同时,数据库文件的巨细并未减小,而是不休的增年夜,直至您的硬盘没有空间。有无好的处置办法呢?实在,在Access中能够对数据库举行紧缩优化以提拔Access数据库和Access项目标功能,如许的紧缩处置的本色是复制该文件,偏重新构造文件在磁盘上的存储体例。可是,在Access项目中举行如许的紧缩不会影响到数据库工具(比方表或视图),由于它们是存储在MicrosoftSQLServer数据库中而不是在Access项目自己中。一样,如许的紧缩也不会影响到Access项目中的主动编号。在Access数据库中,假如已从表的开端删除纪录,紧缩该数据库是就会从头设置主动编号值。增加的下一个纪录的主动编号值将会比表中没有删除的最初纪录的主动编号值年夜一。

上面先容怎样在VB顶用一个CompactJetDatabase历程完成对Access数据库文件的紧缩处置,在这个过程当中有一个可选参数,就是在紧缩前你是不是必要把原本的数据库文件备份光临时目次(True或False)。我用此举措使21.6MB的数据库紧缩到仅仅300KB。

‘这些代码可放在模块中,在其他窗体也利用

PublicDeclareFunctionGetTempPathLib"kernel32"Alias_

"GetTempPathA"(ByValnBufferLengthAsLong,ByVallpBufferAsString)AsLong

PublicConstMAX_PATH=260

PublicSubCompactJetDatabase(LocationAsString,OptionalBackupOriginalAsBoolean=True)

OnErrorGoToCompactErr

DimstrBackupFileAsString

DimstrTempFileAsString

‘反省数据库文件是不是存在

IfLen(Dir(Location))Then

‘假如必要备份就实行备份

IfBackupOriginal=TrueThen

strBackupFile=GetTemporaryPath&"backup.mdb"

IfLen(Dir(strBackupFile))ThenKillstrBackupFile

FileCopyLocation,strBackupFile

EndIf

‘创立一时文件名

strTempFile=GetTemporaryPath&"temp.mdb"

IfLen(Dir(strTempFile))ThenKillstrTempFile

‘经由过程DBEngine紧缩数据库文件

DBEngine.CompactDatabaseLocation,strTempFile

‘删除本来的数据库文件

KillLocation

‘拷贝方才紧缩过一时数据库文件至本来地位

FileCopystrTempFile,Location


‘删除一时文件

KillstrTempFile

Else

EndIf

CompactErr:

ExitSub

EndSub

PublicFunctionGetTemporaryPath()

DimstrFolderAsString

DimlngResultAsLong

strFolder=String(MAX_PATH,0)

lngResult=GetTempPath(MAX_PATH,strFolder)

IflngResult0Then

GetTemporaryPath=Left(strFolder,InStr(strFolder,Chr(0))-1)

Else

GetTemporaryPath=""

EndIf

EndFunction

今后您在利用Access数据库时能够实验举行如许的紧缩,您应当会发明我说的没有错。需要处理因此带来的更多的支持工作,这有可能会带来成本上的提高。在这种情况下,一些MySQL学习教程发行商可能倾向于选择别的开源数据库,例如遵循BSD授权的PostgreSQL。

山那边是海 发表于 2015-1-18 18:58:16

理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识

变相怪杰 发表于 2015-1-23 05:18:45

一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。

灵魂腐蚀 发表于 2015-1-31 14:20:19

个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。

若天明 发表于 2015-2-6 19:42:13

原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!

爱飞 发表于 2015-2-18 11:21:40

以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了

admin 发表于 2015-3-6 04:53:56

比如日志传送、比如集群。。。

冷月葬花魂 发表于 2015-3-12 21:12:14

可以动态传入参数,省却了动态SQL的拼写。

兰色精灵 发表于 2015-3-20 03:22:56

分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。
页: [1]
查看完整版本: MYSQL网站制作之在VB中紧缩ACCESS数据库