我们在使用stl或vc提供的文件操作接口时(如ifstream,CFile),在更改文件中间的数据时,如果新的数据大于(或者)旧的数据,(保存时)会导致文件全部重写(到硬盘);如果等于旧的数据长度时,(保存时)只是修改的部分重写。
1)我的理解对不对?或者操作系统会用某种方法减少文件重写的可能性?
2)数据库文件通常很大,更改一个数据不可能导致全部重写文件。他是怎么避免的?有哪些策略。我理解是数据库的每个项的数据长度是固定的,或者有最大长度限制,这样会导致许多空间没有被利用。
11 个解决方案
#1
不好意思,发重了。版主能不能把此贴删了,把分转到另一个帖子中?
#2
只要帖子还没有回复,自己可以删除的
#3
数据库操作,是直接写磁盘的。
数据库的每个项的数据长度是固定的,或者有最大长度限制,这样会导致许多空间没有被利用。
//这个是没法避免的,为了优化数据库性能,牺牲点空间也是值得的。
数据库的每个项的数据长度是固定的,或者有最大长度限制,这样会导致许多空间没有被利用。
//这个是没法避免的,为了优化数据库性能,牺牲点空间也是值得的。
#4
up
#5
幫頂~~
#6
楼主把我 HU YOU 到这里来了?
#7
我想数据库编程的人更懂一些。
#8
删了之后可用分还会归还吗?
#9
可能没完全理解楼主的意思,
数据库中数据的存储策略我理解有两种,一种是文件型(比如SQL Server7.0以后),一种是设备型(比如SQL Server6.5)
在设备型的数据库中,比如MSSQL6.5,数据库的大小是固定的,必须先建一个固定大小的“设备”,比如分配100M,然后系统就会
创建一个100M大小的文件。如果数据大于设备大小了,会拒绝存储,出错误的。MSSQL7以后改变为动态大小的文件型数据库了,随着
客户数据的增多自动调整大小。它的策略,我想是这样的,初始文件只包括库结构等基本信息,然后,客户有新数据进入增大文件。
存放数据,当数据被删除时,文件不自动缩小,而是通过给数据做标记的方式表示,除非客户主动缩小文件。有没有利用的空间
没什么关系,现在存储介质这么便宜。
数据库中数据的存储策略我理解有两种,一种是文件型(比如SQL Server7.0以后),一种是设备型(比如SQL Server6.5)
在设备型的数据库中,比如MSSQL6.5,数据库的大小是固定的,必须先建一个固定大小的“设备”,比如分配100M,然后系统就会
创建一个100M大小的文件。如果数据大于设备大小了,会拒绝存储,出错误的。MSSQL7以后改变为动态大小的文件型数据库了,随着
客户数据的增多自动调整大小。它的策略,我想是这样的,初始文件只包括库结构等基本信息,然后,客户有新数据进入增大文件。
存放数据,当数据被删除时,文件不自动缩小,而是通过给数据做标记的方式表示,除非客户主动缩小文件。有没有利用的空间
没什么关系,现在存储介质这么便宜。
#10
我们在使用stl或vc提供的文件操作接口时(如ifstream,CFile),在更改文件中间的数据时,如果新的数据大于(或者)旧的数据,(保存时)会导致文件全部重写(到硬盘);如果等于旧的数据长度时,(保存时)只是修改的部分重写。
这个还真没听说过
这个还真没听说过
#11
解释解释吧。
#1
不好意思,发重了。版主能不能把此贴删了,把分转到另一个帖子中?
#2
只要帖子还没有回复,自己可以删除的
#3
数据库操作,是直接写磁盘的。
数据库的每个项的数据长度是固定的,或者有最大长度限制,这样会导致许多空间没有被利用。
//这个是没法避免的,为了优化数据库性能,牺牲点空间也是值得的。
数据库的每个项的数据长度是固定的,或者有最大长度限制,这样会导致许多空间没有被利用。
//这个是没法避免的,为了优化数据库性能,牺牲点空间也是值得的。
#4
up
#5
幫頂~~
#6
楼主把我 HU YOU 到这里来了?
#7
我想数据库编程的人更懂一些。
#8
删了之后可用分还会归还吗?
#9
可能没完全理解楼主的意思,
数据库中数据的存储策略我理解有两种,一种是文件型(比如SQL Server7.0以后),一种是设备型(比如SQL Server6.5)
在设备型的数据库中,比如MSSQL6.5,数据库的大小是固定的,必须先建一个固定大小的“设备”,比如分配100M,然后系统就会
创建一个100M大小的文件。如果数据大于设备大小了,会拒绝存储,出错误的。MSSQL7以后改变为动态大小的文件型数据库了,随着
客户数据的增多自动调整大小。它的策略,我想是这样的,初始文件只包括库结构等基本信息,然后,客户有新数据进入增大文件。
存放数据,当数据被删除时,文件不自动缩小,而是通过给数据做标记的方式表示,除非客户主动缩小文件。有没有利用的空间
没什么关系,现在存储介质这么便宜。
数据库中数据的存储策略我理解有两种,一种是文件型(比如SQL Server7.0以后),一种是设备型(比如SQL Server6.5)
在设备型的数据库中,比如MSSQL6.5,数据库的大小是固定的,必须先建一个固定大小的“设备”,比如分配100M,然后系统就会
创建一个100M大小的文件。如果数据大于设备大小了,会拒绝存储,出错误的。MSSQL7以后改变为动态大小的文件型数据库了,随着
客户数据的增多自动调整大小。它的策略,我想是这样的,初始文件只包括库结构等基本信息,然后,客户有新数据进入增大文件。
存放数据,当数据被删除时,文件不自动缩小,而是通过给数据做标记的方式表示,除非客户主动缩小文件。有没有利用的空间
没什么关系,现在存储介质这么便宜。
#10
我们在使用stl或vc提供的文件操作接口时(如ifstream,CFile),在更改文件中间的数据时,如果新的数据大于(或者)旧的数据,(保存时)会导致文件全部重写(到硬盘);如果等于旧的数据长度时,(保存时)只是修改的部分重写。
这个还真没听说过
这个还真没听说过
#11
解释解释吧。