精华内容
下载资源
问答
  • 数据库收缩

    2019-06-06 10:07:06
    数据库收缩 // An highlighted block ----数据库日志压缩 ALTER database P_EWorkflow SET RECOVERY SIMPLE --收缩日志文件 ALTER database P_EWorkflow SET RECOVERY FULL --收缩数据库 DBCC SHRINKDATABASE('...

    数据库收缩

    // An highlighted block
    ----数据库日志压缩
    
    ALTER database P_EWorkflow SET RECOVERY SIMPLE
       --收缩日志文件
    ALTER database P_EWorkflow SET RECOVERY FULL
    
       --收缩数据库
    DBCC SHRINKDATABASE('数据库')
     
    --收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles
    DBCC SHRINKFILE(1)
    
    ----select * from sysfiles
    
    展开全文
  • 数据库 收缩

    2012-09-17 11:28:00
    ... 数据库中的每个文件都可以通过删除未使用的页的方法来减小。尽管数据库引擎会有效地重新使用空间,但某个文件多次出现无需原来大小的情况后,收缩文件就变得很有必要了。数据和事务日志文件都可以减...

    引用:http://blog.csdn.net/wacthamu/article/details/7428216

    http://topic.csdn.net/t/20060321/13/4628851.html

    数据库中的每个文件都可以通过删除未使用的页的方法来减小。尽管数据库引擎会有效地重新使用空间,但某个文件多次出现无需原来大小的情况后,收缩文件就变得很有必要了。数据和事务日志文件都可以减小(收缩)。可以成组或单独地手动收缩数据库文件,也可以设置数据库,使其按照指定的间隔自动收缩。
    
    文件始终从末尾开始收缩。例如,如果有个 5 GB 的文件,并且在 DBCC SHRINKFILE 语句中将 target_size 指定为 4 GB,则数据库引擎将从文件的最后一个 1 GB 开始释放尽可能多的空间。如果文件中被释放的部分包含使用过的页,则数据库引擎先将这些页重新放置到文件的保留部分。只能将数据库收缩到没有剩余的可用空间为止。例如,如果某个 5 GB 的数据库有 4 GB 的数据,并且在 DBCC SHRINKFILE 语句中将 target_size 指定为 3 GB,则只能释放 1 GB。
    
     自动数据库收缩 
    将 AUTO_SHRINK 数据库选项设置为 ON 后,数据库引擎将自动收缩具有可用空间的数据库。此选项可以使用 ALTER DATABASE 语句来进行设置。默认情况下,此选项设置为 OFF。数据库引擎会定期检查每个数据库的空间使用情况。如果某个数据库的 AUTO_SHRINK 选项设置为 ON,则数据库引擎将减少数据库中文件的大小。该活动在后台进行,并且不影响数据库内的用户活动。
    
    将数据库设置为自动收缩 
    
    ALTER DATABASE (Transact-SQL) 
    
     手动数据库收缩 
    您可以使用 DBCC SHRINKDATABASE 语句或 DBCC SHRINKFILE 语句来手动收缩数据库或数据库中的文件。如果 DBCC SHRINKDATABASE 或 DBCC SHRINKFILE 语句无法回收日志文件中的所有指定空间,则该语句将发出信息性消息,指明必须执行什么操作以便释放更多空间。有关收缩日志文件的详细信息,请参阅收缩事务日志。
    
    在该过程中任意时间都可停止 DBCC SHRINKDATABASE 和 DBCC SHRINKFILE 操作,所有已完成工作都将保留。
    
    在使用 DBCC SHRINKDATABASE 语句时,您无法将整个数据库收缩得比其初始大小更小。因此,如果数据库创建时的大小为 10 MB,后来增长到 100 MB,则该数据库最小只能收缩到 10 MB,即使已经删除数据库的所有数据也是如此。
    
    但是,使用 DBCC SHRINKFILE 语句时,可以将各个数据库文件收缩得比其初始大小更小。必须对每个文件分别进行收缩,而不能尝试收缩整个数据库。 
    展开全文
  • 数据库收缩语句

    2014-05-05 17:20:52
    数据库收缩语句,释放SQL数据库日志空间。SQL 2008R2版本通过测试。
  • 数据库收缩神器(SQLserver),绝对神器,选择要收缩的数据库,直接执行
  • 数据库收缩和扩大Canary-releasing or zero-downtime/blue-green deployments are made easy by the tools and techniques we have today. Running a second instance of a service is a piece of cake. Especially ...

    数据库收缩和扩大

    Canary-releasing or zero-downtime/blue-green deployments are made easy by the tools and techniques we have today. Running a second instance of a service is a piece of cake. Especially in the cloud. But aren’t we forgetting something?

    我们今天拥有的工具和技术使金丝雀释放或零停机时间/蓝绿色部署变得容易。 运行服务的第二个实例是小菜一碟。 特别是在云中。 但是我们不是忘记了什么吗?

    Canary-releasing and blue-green deployments have something in common: They require two versions of the software to be up and running at the same time.

    金丝雀释放和蓝绿色部署有一些共同点:它们需要两个版本的软件同时启动和运行。

    It’s not just a matter of running multiple instances of software somewhere. You’ve got to think about backward compatibility, too! One of the instances will break if it’s dependency isn’t compatible.

    这不仅仅是在某个地方运行多个软件实例的问题。 您还必须考虑向后兼容性! 如果其依赖项不兼容,则实例之一将中断。

    What’s the most common shared dependency? The database! Blue-green deployments and canary-releases require your database to be backward-compatible. Use a pattern called Expand and Contract, or Parallel Change to get it sorted!

    最常见的共享依赖项是什么? 数据库! 蓝绿色部署和Canary版本要求您的数据库向后兼容。 使用称为扩展和收缩或并行更改的模式对其进行排序!

    一个实际的例子: (A practical example:)

    Assume we’re running a web store and the team is going to build the following story:

    假设我们正在运营一个网络商店,并且团队将构建以下故事:

    To receive my purchase when I’m not at homeAs a customer with an office-jobI want to have my purchase sent to the office instead of my home address

    当我不在家时 可以 收到我的订单 作为 办公室工作的客户, 想要 将我的购买商品发送到办公室而不是我的家庭住址

    Let’s assume there’s a database that contains a table with orders and the table already contains addresses. The current data structure looks like this:

    假设有一个数据库,其中包含带有订单的表,并且该表已经包含地址。 当前的数据结构如下所示:

    Say we’ll solve the user story by storing two addresses instead of one: The delivery address and the billing address. Meaning the “old” address column in the database will be dropped, and two new columns will appear. This will be the new data structure:

    假设我们将通过存储两个地址而不是一个地址来解决用户问题:交货地址和帐单地址。 意味着将删除数据库中的“旧”地址列,并出现两个新列。 这将是新的数据结构:

    Image for post
    Image 2.) The new data structure
    图片2.)新的数据结构

    问题 (The problem)

    These data structures aren’t compatible. The current version of the web store depends on the address field. Deploying the new data structure will drop that field, causing the current version of the web store to break.

    这些数据结构不兼容。 网络商店的当前版本取决于地址字段。 部署新的数据结构将删除该字段,从而导致网络商店的当前版本中断。

    As a result, neither blue-green deployments nor canary releases will work. It requires two versions of the same software are “up” simultaneously. In this case, the newer software is incompatible with the current database, and visa versa. If the “newer” database is “up”, the current version of the software will be “down”, and visa versa.

    结果,蓝绿色部署或金丝雀版本都将无法工作。 它要求同一软件的两个版本必须同时“启动”。 在这种情况下,较新的软件与当前数据库不兼容,反之亦然。 如果“较新的”数据库为“上”,则该软件的当前版本为“下”,反之亦然。

    向后兼容的架构更改 (Backward-compatible schema changes)

    Implementing a new database schema in a backward-compatible way is done using multiple releases:

    使用多个版本以向后兼容的方式实现新的数据库模式:

    Image for post
    Image 3.) Changing a database-schema the backward-compatible way
    图3.)以向后兼容的方式更改数据库架构

    Let’s apply it: We’re introducing the “BillingAddress” and the “DeliveryAddress” field, and we’re dropping the “Address” field.

    让我们应用它:我们引入“ BillingAddress”“ DeliveryAddress”字段,并删除“ Address”字段。

    步骤1.)部署新架构 (Step 1.) Deploy the new schema)

    The first thing to do is to deploy the new schema. The old schema needs to remain intact and should be considered the source of truth. Assume the data in the new schema is incorrect or missing in Software Version B.

    首先要做的是部署新架构。 旧的模式需要保持完整,并应被视为真理的来源。 假定新版本中的数据不正确或在软件版本B中丢失。

    In the example of the billing address, that will result in the following data-structure:

    在帐单地址示例中,这将导致以下数据结构:

    Image for post
    Image 4.) Introducing the new columns, but leave the current data structure intact
    图4.)介绍了新的列,但保留了当前的数据结构

    Assume we’ve got canary releases. 10% of the users will be routed to the newest version of the software, 90% will be routed to the current version of the software.

    假设我们有金丝雀版本。 10%的用户将被路由到该软件的最新版本,90%的用户将被路由到该软件的当前版本。

    In that case, for a given amount of time, Software Version A and Software Version B will be running simultaneously. Both versions will update the database simultaneously. As a result, 90% of the records in the new schema will not have (correct) values.

    在这种情况下,在给定的时间内,软件版本A和软件版本B将同时运行。 这两个版本将同时更新数据库。 结果,新架构中90%的记录将没有(正确)值。

    The version of the software that introduces the new schema should be writing to it, but not read from it.

    引入新模式的软件版本应该正在写入它,而不是从中读取。

    步骤2。)开始使用新的数据库架构 (Step 2.) Start using the new database schema)

    With the new schema in place, the next version of the software can start using it.

    有了新的架构,该软件的下一版本就可以开始使用它。

    Software Version C has the same data structure Software Version B has. But there’s a difference: Version C depends on correct data in the new schema. Software Version C will consider the new database schema to be the source of truth.

    软件版本C具有与软件版本B相同的数据结构。 但是有一个区别:版本C依赖于新模式中的正确数据。 软件版本C将认为新的数据库架构是事实的来源。

    If we don’t migrate the data from the old schema into the new schema in Release 2 (as shown in Image 3.), then Software Version C will not work. It depends on correct data in the new schema.

    如果我们不将数据从旧模式迁移到版本2中的新模式(如图3所示),则软件版本C将无法工作。 它取决于新架构中的正确数据。

    To make Software Version C compatible with Software Version B, Software Version C needs to keep the data in both the old- and the new schema up to date. Software Version B. does not “trust” the data from the new schema yet, so it depends on the data in the old schema.

    为了使软件版本C与软件版本B兼容,软件版本C需要使旧模式和新模式中的数据保持最新。 软件版本B.尚未“信任”新架构中的数据,因此它取决于旧架构中的数据。

    步骤3。)停止使用旧模式 (Step 3.) Stop using the old schema)

    Next, focus on removing the old data structure. To get there, the first step is to stop using the field. As a result, this is what Software Version D looks like:

    接下来,集中精力删除旧的数据结构。 要到达那里,第一步是停止使用该字段。 结果,这是软件版本D的样子:

    Image for post
    Image 5.) Stop using the old database fields
    图5.)停止使用旧的数据库字段

    We can’t drop the columns from the old schema yet, because Software Version C needs to be able to keep it up to date.

    我们还不能删除旧模式中的列,因为软件版本C需要能够使其保持最新状态。

    步骤4.)删除旧模式 (Step 4.) Drop the old schema)

    After Software Version D stopped using the old database schema, it can finally be dropped. Software Version E will have the following data structure:

    在软件版本D停止使用旧数据库架构后,可以最终将其删除。 软件版本E将具有以下数据结构:

    Image for post
    Image 6.) Drop the old fields
    图6.)删除旧字段

    不足之处 (The downside)

    Using this method to change database schema’s is great. It makes things like Canary Releases possible. But there’s a downside.

    使用此方法来更改数据库架构的效果很好。 它使诸如Canary Releases之类的事情成为可能。 但是有一个缺点。

    Don’t use expand-and-contract if you’re not releasing often. Changing the database schema takes many releases. If you’re not releasing every month, a change to a schema takes half a year before you know it.

    如果您不经常发布内容,请不要使用扩展合同。 更改数据库架构需要许多版本。 如果您不是每个月都发布,则对架构的更改需要半年的时间才能知道。

    摘要 (Summary)

    Modern progressive delivery depend on having multiple versions of the software “up” at the same time. To be able to do so, their dependencies need to be compatible. The database is the most common dependency.

    现代渐进式交付依赖于同时“运行”多个软件版本。 为此,它们的依赖项必须兼容。 数据库是最常见的依赖项。

    Making changes to a database-schema can cause previous versions of the software to break. To prevent that, use a practice called expand and contract. Use multiple releases to create the new schema first, use it in the next release, stop using the previous schema in the next release, and drop it in the next.

    对数据库架构进行更改可能会导致该软件的先前版本中断。 为避免这种情况,请使用称为扩展和收缩的做法。 使用多个发行版首先创建新架构,在下一个发行版中使用它,在下一个发行版中停止使用上一个架构,然后在下一个发行版中删除它。

    Last, but not least: Release frequently!

    最后但并非最不重要:请经常发布!

    Thanks to:

    谢谢:

    翻译自: https://medium.com/vx-company/expand-and-contract-d5635e31776e

    数据库收缩和扩大

    展开全文
  • sql sqlserver2005数据库收缩功能使用
  • 数据库收缩:NOTRUNCATE与TRUNCATEONLY 原文:数据库收缩:NOTRUNCATE与TRUNCATEONLY在进行数据库收缩时,我们有2个可用选项:NOTRUNCATE,TRUNCATEONLY。这篇文章我们会详细讨论下这2个选项的具体区别...
    原文:数据库收缩:NOTRUNCATE与TRUNCATEONLY

    在进行数据库收缩时,我们有2个可用选项:NOTRUNCATETRUNCATEONLY。这篇文章我们会详细讨论下这2个选项的具体区别。

    NOTRUNCATE

    当你对数据库收缩命令提供NOTRUNCATE选项时,意味着SQL Server将你数据库末尾的页移到前面,那里可以找到一些空闲的未分配空间(将释放的空间继续保留在文件中)。唯一的区别是数据文件本身不会收缩。

    这就是说在数据库末尾的未使用空间还是没有重声明回给文件系统。用NOTRUNCATE选项进行数据收缩后,最后在你数据文件的末尾会有一些空的可用空间——当然会带来索引碎片。

    TRUNCATEONLY

    当你用TRUNCATEONLY参数执行数据库收缩命令时,SQL Server从末尾到开始,只要在文件末尾有空的可用空间,就会把数据文件清理掉。使用这个选项SQL Server在数据文件里不会移动任何页。你本人必须确认在你的数据文件末尾会有一些可用空间,这样TRUNCATEONLY会为你申明一些空间。

    如果你已经仔细阅读了这点,现在你应该能想象当你进行常规的数据库收缩,不使用这些选项时,SQL Server内部会发生什么:

    • 第1步SQL Server使用NOTRUNCATE选项进行数据库收缩操作来在你的数据文件末尾获得一些可用空间。在你的操作系统里,你的文件物理大小没有发生改变。这一步会带来一些索引碎片。
    • 第2步SQL Server使用TRUNCATEONLY选项进行数据库收缩操作,最后在数据文件末尾移除未分配的区。在操作系统里,这也会把文件的物理大小收缩。

    小结

    数据库收缩命令提供的任何选项都与你无关:因为从不推荐进行数据库收缩!如果你知道在你数据文件末尾有未分配的空间,你不想要这些的话,使用TRUNCATEONLY选项进行数据库收缩更安全,因为你不会引入索引碎片。但一旦你使用了NOTRUNCATE选项,SQL Server需要在你的数据文件里移动页,这会带来严重的索引碎片。

    感谢关注!

    posted on 2015-07-29 09:25 NET未来之路 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/lonelyxmas/p/4685028.html

    展开全文
  • 1、为什么要进行数据库收缩?SQL Server 数据库采取预先分配空间的方法来建立数据库的数据文件或者日志文件,比如数据文件的空间分配了300MB,而实际上只占用了20MB空间,这样就会...
  • 收缩数据库文件(如果不压缩,数据库的文件不会减小  企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件  --选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入...
  • 关于数据库收缩的几点建议

    千次阅读 2019-03-07 16:34:51
    1.数据库收缩会导致大量的索引碎片,这严重影响查询效率 2.任何时候禁用自动收缩 3.在必要的收缩之后,要处理因此而导致的索引碎片问题 收缩大数据库的建议: - Create a new filegroup - Move all affected ...
  • access数据库收缩问题

    2016-09-01 13:05:58
    用cdaodatabase操作access数据库,定时清理数据库中数据。求问清理数据后如何编程收缩数据库,减小数据库体积。
  • SQL数据库收缩日志

    2011-02-13 12:28:02
    SQL数据库收缩日志 declare @name varchar(25) declare @sql varchar(1000) declare @logid int DECLARE sdys cursor for select /*top 5 部分处理*/ name from master.dbo.sysdatabases open sdys FETCH ...
  • 2008数据库收缩日志

    2012-11-05 16:38:59
    1、通过执行脚本完成收缩数据库日志。 2、也可以按照附加说明,通过Microsoft SQL Server Management Studio窗口进行操作。
  • SQLite数据库收缩研究及学习认识

    千次阅读 2015-10-31 14:33:53
    数据库本身大小不会变化,需要做一些别的操作来达到瘦身目的,网上很多相关文章,但是都不算很具体,尤其是具体操作部分,我只说一种方式还有另一种就是用代码执行一句话来使数据库收缩,本人推荐
  • SQL 数据库收缩日志

    2019-09-18 06:45:24
    BACKUP LOG [数据库名称] TO DISK = 'nul'DBCC SHRINKFILE('[数据库名称]_Log',4096)
  • 转:数据库收缩

    2018-03-15 09:45:00
    在MS中创建数据库时会为数据库分配初始的大小(如下图:数据库和日志两个文件),随着数据库的使用文件会逐渐增大。数据库文件大小的增加有两种方式: 自动增长:在自动增长中可以设置每次的增长量,以及最大增长...
  • SQL SERVER 2008 数据库收缩语句 USEEsurfing; GO -- 将日志设为简单模式,截断日志 ALTERDATABASEEsurfing SETRECOVERYSIMPLE; GO -- 收缩日志, 日志文件逻辑名,单位MB DBCCSHRINKFILE(Esurfing_log,1); ...
  • 数据库收缩小结

    2016-02-17 10:34:00
    收缩数据库的时候可能用到的命令有: dbcc sqlperf(logspace) --查看数据库日志空间使用情况 use xxxDB exec sp_spaceused --查看具体数据库的空间使用情况 select * from sys.sysfiles --查看具体...
  • 数据库收缩日志

    2011-09-18 13:22:32
    SQL2000删除数据库日志有两种方法 一种方法:清空日志。 1.打开查询分析器,输入命令 DUMP TRANSACTION ...2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件, 在收
  • 六、数据库收缩 七、数据库快照 八、复制数据库 一、使用函数查看: 二、查看该服务器下所有数据库的状态: 三、修改数据库名称 方法一:鼠标右击点击重名,但是这种法的修改,并改不了其他文件的名称 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,900
精华内容 1,160
关键字:

数据库收缩