SQLServer数据文件和日志文件怎么不改变?

chary8088 2010-09-06 03:04:53
我首选创建一个表
create table mstest..newtable([key] varchar(5));
然后插入两条数据
Insert into mstest..newtable values(2)
Insert into mstest..newtable values(3)

但是发现 MSTEST_log.ldf
MSTEST_log.mdf
并没有变化,修改时间没有变化,大小也没有变化
请问日志和数据保存在哪里了??


多谢
...全文
335 20 打赏 收藏 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
obuntu 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 chary8088 的回复:]

引用 10 楼 obuntu 的回复:

空间满后,自动扩展也会改变。。

如果单纯的插入,删除数据是不会改变文件的时间。


能否具体说下,谢谢
[/Quote]

还真没找到这方面的相关资料,曾经也有和你这样的疑问,后面才慢慢发现在在这两个条件的触发下,才会导致数据文件的最后修改时间(lastAccessTime)发生改变。

如果真要解释的话,可以参考下我的理解吧:

1,我们常见的像txt,doc文件,都是单个文件,OS在处理这些文件的时候,会在内存里产生相关的Handle,这些Handle是对应单个文件的,所以在每次修改txt,doc文件的内容时,handle的信息会同样更新,这也包括了最后修改时间;

2,对于数据文件和日志文件而言,OS不是直接对单个数据文件产生相关的HANDLE来处理,而是通过SQLOS(2005 和 2008)或者UMS (sqlserver 2000)里的Access method模块来操作数据文件的,这个时候根本就不关OS的什么事,所以修改时间的属性就不会发生改变;

3,如果文件需要扩展时,文件控制权又交到了OS手上,修改时间就会发生改变了。

其他方面的就参考楼上几位的吧。不过知道“对表数据的更改,不会改变数据文件的更改时间”就可以了。

没权威答案,只是自己的理解,仅供参考。
:)
claro 2010-09-06
  • 打赏
  • 举报
回复
对于日期的部分,您看联机丛书16F的回复即可。

借您宝地,发2图,关于学习习惯和提问的智慧。谢谢!

好的学习习惯


提问的智慧
claro 2010-09-06
  • 打赏
  • 举报
回复
/*--以下数据仅表示在完全模式下,数据库会直观呈现数据和日志分别增长的情况,与数据量和事务有关
------------------------------------------------------------------------
-- Author : clArO
-- Date : 2010-09-06

-- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Enterprise Edition on Windows NT 6.0 <X86> (Build 6001: Service Pack 1)
------------------------------------------------------------------------



*/
USE master
go
create database mstest
go
--命令已成功完成。
create table mstest..newtable([key] varchar(5));
go
--命令已成功完成。

sp_helpdb mstest
--result1:
name db_size
mstest 2.81 MB
--result2:
size
2304 KB
576 KB

---插入10万数据
DECLARE @counter int
SET @counter=1
WHILE(@counter<=100000)
BEGIN
INSERT mstest..newtable values ('a')
SET @counter=@counter+1
END

--再查看数据库大小,注意此时数据文件肯定有变化
sp_helpdb mstest
--result1:
name db_size
mstest 3.81 MB
--result2:
size
3328 KB --已经显示容量增大
576 KB


---插入100万数据
DECLARE @counter int
SET @counter=1
WHILE(@counter<=1000000)
BEGIN
INSERT mstest..newtable values ('a')
SET @counter=@counter+1
END


select COUNT(1) from mstest..newtable
--2100000

sp_helpdb mstest
--result1:
name db_size
mstest 32.06 MB
--result2:
size
32000 KB
832 KB --日志增长



drop database mstest
--命令已成功完成。


/*--以下数据仅表示在完全模式下,数据库没有直观呈现数据和日志分别增长的情况,与数据量和事务有关

*/
USE master
go
create database mstest2
go
--命令已成功完成。
create table mstest2..newtable([key] varchar(5));
go
--命令已成功完成。
use mstest2
--命令已成功完成。
-->查看日志记录数
select COUNT(1) from fn_dblog (NULL,NULL)
--result1:
86

-->插入2行数据
insert into mstest2..newtable values ('a')
insert into mstest2..newtable values ('b')
(1 行受影响)

(1 行受影响)

-->再查看日志情况
select COUNT(1) from fn_dblog (NULL,NULL)
--result2:
110

--显示日志已增长。
/*为何日志增长了,但在DBCC LOGINFO或sp_helpdb中看不到呢?
1、没有数据论证,但肯定跟数据库的日志增长设置有关,比如设置增长比例或者最大值等。
2、事务导致日志增长不没有达到最小显示值。在数据文件中通常是按块比如8K进行存储。
*/

drop database mstest2
--命令已成功完成。
chary8088 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 claro 的回复:]

引用 15 楼 chary8088 的回复:
这个解释有点笼统,也为说出为什么
伙计,去给俺买块豆腐。

一会回复你关于数据和日志的问题。因为我机器有点问题,暂时给你数据。

关于日期的问题,这跟数据库的定义有关。建议你在查询分析器中输入sys.databases,然后全选按F1,了解联机丛书中关于它(各字段)的详细定义。
[/Quote]

期待你的回复
claro 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 chary8088 的回复:]
这个解释有点笼统,也为说出为什么
[/Quote]伙计,去给俺买块豆腐。

一会回复你关于数据和日志的问题。因为我机器有点问题,暂时给你数据。

关于日期的问题,这跟数据库的定义有关。建议你在查询分析器中输入sys.databases,然后全选按F1,了解联机丛书中关于它(各字段)的详细定义。

chary8088 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 claro 的回复:]

修改日期obuntu已经回复了,跟数据库级的操作有关,跟数据操作无关。
[/Quote]
这个解释有点笼统,也为说出为什么
claro 2010-09-06
  • 打赏
  • 举报
回复
修改日期obuntu已经回复了,跟数据库级的操作有关,跟数据操作无关。

chary8088 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 guguda2008 的回复:]

这样的,新建数据库时,会有一个初始分配的空间,然后你建了一张表,往里插数据,这些操作因为数据量比较小,所以只是在初始分配的空间里申请了一个数据页,然后写入了几行信息。所以你的数据库文件还是那么大,至于修改日期就不知道WINDOWS怎么计算的了,扩展数据文件空间时应该会变吧。
[/Quote]

是的,这点我也想不通
guguda2008 2010-09-06
  • 打赏
  • 举报
回复
这样的,新建数据库时,会有一个初始分配的空间,然后你建了一张表,往里插数据,这些操作因为数据量比较小,所以只是在初始分配的空间里申请了一个数据页,然后写入了几行信息。所以你的数据库文件还是那么大,至于修改日期就不知道WINDOWS怎么计算的了,扩展数据文件空间时应该会变吧。
chary8088 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 obuntu 的回复:]

空间满后,自动扩展也会改变。。

如果单纯的插入,删除数据是不会改变文件的时间。
[/Quote]

能否具体说下,谢谢
obuntu 2010-09-06
  • 打赏
  • 举报
回复
空间满后,自动扩展也会改变。。

如果单纯的插入,删除数据是不会改变文件的时间。
obuntu 2010-09-06
  • 打赏
  • 举报
回复
在分离或附加时,会改变。
喜-喜 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chary8088 的回复:]
引用 3 楼 happycell188 的回复:

数据文件与日志文件大小是按照“百分比”或“一定数值”呈阶梯型递增的,少量数据不足以文件大小的变化...


那至少文件的修改时间会变化吧????
[/Quote]

这个不太晓得,也许文件的修改时间是随着文件大小变动而变动的,既然文件的大小是呈阶梯性变化的,那么可以设想一下,文件的修改时间也可能是间断性变化。你可以在 mstest 数据库中插入更多个表,更多的数据来验证一下...
cjzm83 2010-09-06
  • 打赏
  • 举报
回复
区中还有可分配的页吧,你加1万条试试
chary8088 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 claro 的回复:]

这个数据变化你肉眼无法识别。

想吃饭吗?==,给你两粒米!
[/Quote]
怎么日志文件Ldf和数据文件mdf的修改时间没变化呢?
chary8088 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 happycell188 的回复:]

数据文件与日志文件大小是按照“百分比”或“一定数值”呈阶梯型递增的,少量数据不足以文件大小的变化...
[/Quote]

那至少文件的修改时间会变化吧????
claro 2010-09-06
  • 打赏
  • 举报
回复
这个数据变化你肉眼无法识别。

想吃饭吗?==,给你两粒米!
喜-喜 2010-09-06
  • 打赏
  • 举报
回复
数据文件与日志文件大小是按照“百分比”或“一定数值”呈阶梯型递增的,少量数据不足以文件大小的变化...
chary8088 2010-09-06
  • 打赏
  • 举报
回复
运行了,还是那样
修改时间没有变化,大小也没有变化
guguda2008 2010-09-06
  • 打赏
  • 举报
回复
运行CHECKPOINT再看看
源码链接: https://pan.quark.cn/s/a4b39357ea24 微信小程序是由腾讯公司设计的一种轻量级应用开发平台,主要面向移动设备,旨在为用户带来无需下载安装即可直接使用的应用服务体验。在微信小程序的开发实践中,"模仿美团菜单 swiper分类菜单"是一项常见的技术应用,其目的是达成与美团外卖应用相似的交互模式,使用户能够轻松地浏览和挑选各种商品或服务。 在微信小程序的技术体系中,`swiper`组件属于轮播图功能模块,通常用于呈现多张图片或卡片式的切换界面,能够达成动态滑动展示不同分类菜单的功能。在模拟美团菜单的应用情境下,`swiper`组件一般与`swiper-item`组件协同工作,每一个`swiper-item`对应一个分类,用户可通过左右滑动来切换不同的分类菜单。 为了达成这样的功能,首先需要在微信小程序的`json`配置文档中引入`swiper`组件,并在`wxml`结构文档中构建相应的布局代码,将每个分类以`swiper-item`的形式进行组织。同时,需要在`wxss`样式文档中定义恰当的样式,保证分类菜单的视觉呈现符合设计规范。 接下来,我们将在`js`逻辑文档中处理`swiper`的切换逻辑,通过监听`bindchange`事件来识别当前选中的分类,并根据这一信息动态获取对应的子菜单信息。为了达成类似美团的层级菜单功能,可能还需要借助`picker`或`navigator`组件来展示二级分类或商品详情。 在开发阶段,需要关注以下关键点: 1. 数据绑定:保证数据与界面之间的双向链接准确无误,以便在选择分类时即时更新显示内容。 2. 动态加载:针对大量数据,可能需要采取异步加载机制,防止一次性加载过多内容引发性能瓶颈...
代码下载地址: https://pan.quark.cn/s/72bd50ecb2fb 《微信飞机大战素材详解》 微信飞机大战作为一款广受欢迎的休闲游戏,凭借其便捷的操作方式和紧张刺激的游戏过程,赢得了众多用户的青睐。本文将系统性地剖析这款游戏的关键素材,旨在帮助开发者全面掌握游戏的设计理念与实现方法。 我们聚焦于游戏的核心构成——"AirplaneResource"。此名称一般指向游戏资源库,其中收纳了游戏中所有的视觉素材、音频资料以及动画元素。在微信飞机大战的语境下,这些资源构成了游戏画面呈现、音效播放和动态效果的基础。 1. **图像素材**:游戏中的飞机造型、敌方单位、弹药以及爆炸效果等视觉元素,均以图像素材的形式进行展示。图像素材通常涵盖PNG或JPG格式的静态图片,也包括GIF或APNG格式的动态图片。开发者需要细致地设计并优化这些图像,确保在各种设备上都能实现流畅的渲染,同时维持视觉表现力。 2. **声音素材**:游戏的背景音乐、射击音效、爆炸声等音频片段,对于构建游戏氛围具有决定性作用。这些音频文件可能以MP3、WAV或OGG格式进行存储,开发者需要权衡音频的压缩程度与音质,以确保在不牺牲游戏体验的前提下,有效控制文件体积。 3. **动画序列**:飞机的飞行轨迹、攻击动作、爆炸过程等动态表现,通常借助序列帧动画技术实现。这些序列帧图片组合而成的动画,通过编程控制播放速率和顺序,为游戏增添生动的动态效果。 4. **物理接触判定**:游戏中飞机与弹药之间的接触判定,是通过算法完成的。开发者可能会采用基础的矩形接触判定或更精密的像素级接触判定,以保证游戏的公平性和挑战性。 5. **游戏规则**:微信飞机大战的得分机制、生命值系统、敌机生成逻辑等...

22,298

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧