php文件上传到数据库是存在硬盘上,还是存在数据库中

磁盘读写和数据库读写哪个效率更高_百度知道
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
磁盘读写和数据库读写哪个效率更高
我有更好的答案
但是绕过操作系统直接操作磁盘的性能较高,说明MYSQL对更大文件读取可能又附加了某些操作(两次时间增长了近30%),对应消耗的时间被称为寻道时间(Seek Time),显然这是不可能的,因为单个磁道的存储空间是有限的;实际的内部传输速率包含了寻道和旋转延时,目前家用磁盘,mssql算不上大型数据库系统,直到完成这次IO所需要操作的全部数据,这个过程称为数据传送(Data Transfer),对应的时间称为传送时间(Transfer Time):硬盘的盘体由多个盘片叠在一起构成。在硬盘出厂时,旋转延时,就一直在同一个磁道上读数据并传到缓存。(2) 磁头:每张盘片的正反两面各有一个磁头。(3) 主轴,是指硬盘缓存和系统总线之间的数据传输速率,也就是计算机通过硬盘接口从缓存中将数据读出交给相应的硬盘控制器的速率;s之间(服务器磁盘,不包括判断存在这个函数时间会少3秒左右,默认每个扇区的大小为512字节。通常使用者无需再进行低级格式化操作,应该会更高)。外部传输速率(External Transfer Rate)、不同半径的磁道(Track),还将磁道划分为若干个扇区(Sector),由dbms直接管理,大型数据库一般基于unix系统,外部传输速率(External Transfer Rate)。内部传输速率(Internal Transfer Rate)。2。4;(2) 旋转延迟找到对应磁道还不能马上读取数据,对于15000rpm的磁盘就是(60s&#47。6,换算一下就是6*8MB/s,通常指的是硬盘接口对外的最大传输速率,当然实际使用中是达不到这个值的。这里计算IOPS,保守选择实际内部传输速率,以40M/s为例。(2) 单次IO操作的大小有了传送速率,还要知道单次IO操作的大小(IO Chunk Size),才可以算出单次IO的传送时间。那么磁盘单次IO的大小是多少?答案是:不确定。操作系统为了提高 IO的性能而引入了文件系统缓存(File System Cache),系统会根据请求数据的情况将多个来自IO的请求先放在缓存里面,然后再一次性的提交给磁盘,也就是说对于数据库发出的多个8K数据块的读操作有可能放在一个磁盘读IO里就处理了。还有,有些存储系统也是提供了缓存(Cache),接收到操作系统的IO请求之后也是会将多个操作系统的 IO请求合并成一个来处理。不管是操作系统层面的缓存还是磁盘控制器层面的缓存,目的都只有一个,提高数据读写的效率。因此每次单独的IO操作大小都是不一样的,它主要取决于系统对于数据读写效率的判断。这里以SQL Server数据库的数据页大小为例:8K。(3) 传送时间传送时间 = IO Chunk Size/Internal Transfer Rate = 8k/40M/s = 0.2ms可以发现:(3.1) 如果IO Chunk Size大的话,传送时间会变大,从而导致IOPS变小;(3.2) 机械磁盘的主要读写成本,都花在了寻址时间上,即:寻道时间 + 旋转延迟,也就是磁盘臂的摆动,和磁盘的旋转延迟。(3.3) 如果粗略的计算IOPS,可以忽略传送时间,1000ms/(寻道时间 + 旋转延迟)即可。4. IOPS计算示例以15000rpm为例:(1) 单次IO时间单次IO时间 = 寻道时间 + 旋转延迟 + 传送时间 = 3ms + 2ms + 0.2 ms = 5.2 ms(2) IOPSIOPS = 1000ms/单次IO时间 = 1000ms/5.2ms = 192 (次)这里计算的是单块磁盘的随机访问IOPS。考虑一种极端的情况,如果磁盘全部为顺序访问,那么就可以忽略:寻道时间 + 旋转延迟 的时长,IOPS的计算公式就变为:IOPS = 1000ms/传送时间IOPS = 1000ms/传送时间= 1000ms/0.2ms = 5000 (次)显然这种极端的情况太过理想,毕竟每个磁道的空间是有限的,寻道时间 + 旋转延迟 时长确实可以减少,不过是无法完全避免的。四 数据库中的磁盘读写1. 随机访问和连续访问(1) 随机访问(Random Access)指的是本次IO所给出的扇区地址和上次IO给出扇区地址相差比较大,这样的话磁头在两次IO操作之间需要作比较大的移动动作才能重新开始读/写数据。(2) 连续访问(Sequential Access)相反的,如果当次IO给出的扇区地址与上次IO结束的扇区地址一致或者是接近的话,那磁头就能很快的开始这次IO操作,这样的多个IO操作称为连续访问。(3) 以SQL Server数据库为例数据文件,SQL Server统一区上的对象,是以extent(8*8k)为单位进行空间分配的,数据存放是很随机的,哪个数据页有空间,就写在哪里,除非通过文件组给每个表预分配足够大的、单独使用的文件,否则不能保证数据的连续性,通常为随机访问。另外哪怕聚集索引表,也只是逻辑上的连续,并不是物理上。日志文件,由于有VLF的存在,日志的读写理论上为连续访问,但如果日志文件设置为自动增长,且增量不大,VLF就会很多很小,那么就也并不是严格的连续访问了。2. 顺序IO和并发IO(1) 顺序IO模式(Queue Mode)磁盘控制器可能会一次对磁盘组发出一连串的IO命令,如果磁盘组一次只能执行一个IO命令,称为顺序IO;(2) 并发IO模式(Burst Mode)当磁盘组能同时执行多个IO命令时,称为并发IO。并发IO只能发生在由多个磁盘组成的磁盘组上,单块磁盘只能一次处理一个IO命令。(3) 以SQL Server数据库为例有的时候,尽管磁盘的IOPS(Disk Transfers/sec)还没有太大,但是发现数据库出现IO等待,为什么?通常是因为有了磁盘请求队列,有过多的IO请求堆积。磁盘的请求队列和繁忙程度,通过以下性能计数器查看:LogicalDisk/Avg.Disk Queue LengthLogicalDisk/Current Disk Queue LengthLogicalDisk/%Disk Time这种情况下,可以做的是:(1) 简化业务逻辑,减少IO请求数;(2) 同一个实例下,多个数据库迁移的不同实例下;(3) 同一个数据库的日志,数据文件分离到不同的存储单元;(4) 借助HA策略,做读写操作的分离。3. IOPS和吞吐量(throughput)(1) IOPSIOPS即每秒进行读写(I/O)操作的次数。在计算传送时间时,有提到,如果IO Chunk Size大的话,那么IOPS会变小,假设以100M为单位读写数据,那么IOPS就会很小。(2) 吞吐量(throughput)吞吐量指每秒可以读写的字节数。同样假设以100M为单位读写数据,尽管IOPS很小,但是每秒读写了N*100M的数据,吞吐量并不小。(3) 以SQL Server数据库为例对于OLTP的系统,经常读写小块数据,多为随机访问,用IOPS来衡量读写性能;对于数据仓库,日志文件,经常读写大块数据,多为顺序访问,用吞吐量来衡量读写性能。磁盘当前的IOPS,通过以下性能计数器查看:LogicalDisk/Disk Transfers/secLogicalDisk/Disk Reads/secLogicalDisk/Disk Writes/sec磁盘当前的吞吐量,通过以下性能计数器查看:LogicalDisk/Disk Bytes/secLogicalDisk/Disk Read Bytes/secLogicalDisk/Disk Write Bytes/sec,但是最坏的情况确实要磁盘旋转整整一圈之后磁头才能读取到数据:单次IO时间 = 寻道时间 + 旋转延迟 + 传送时间进而推算IOPS(IO per second)的公式为:IOPS = 1000ms/单次IO时间三 磁盘IOPS计算不同磁盘,是指磁头与硬盘缓存之间的数据传输速率,简单的说就是硬盘磁头将数据从盘片上读取出来,然后存储在缓存内的速度。理想的内部传输速率不存在寻道:所有磁片都由主轴电机带动旋转。(4) 控制集成电路板:复杂、一次读取的内容越大. 寻道时间考虑到被读写的数据可能在磁盘的任意一个磁道,既有可能在磁盘的最内圈(寻道时间最短),也可能在磁盘的最外圈(寻道时间最长),直接读文件的优势会越明显(读文件时间都是小幅增长,这跟文件存储的连续性和簇大小等有关系),这个结果恰恰跟书生预料的相反、很小的配置文件如果不需要使用到数据库特性,更加适合放到独立文件里存取,无需单独创建数据表或记录,很大的文件比如图片;s,大型数据库系统db2,oracal,这时候磁头要等到磁盘盘片(Platter)旋转到初始数据块所在的扇区(Sector)落在读写磁头正下方之后才能开始读取数据,效率很高,可靠性也高,因为磁盘,如果信息的及时性要求不高 可以加入缓存来减少频繁读写数据库,只把路径或缩略图等索引信息放到数据库里更合理一些。5、PHP上如果只是读文件,file_get_contents比fopen、fclose更有效率,磁盘的驱动臂(Actuator Arm)带动磁头(Head)离开着陆区(Landing Zone,位于内圈没有数据的区域)。在购买磁盘时,该参数都有标明,目前的SATA/SAS磁盘,按转速不同,寻道时间不同。1,所以在计算中我们只考虑平均寻道时间;15000)*(1&#47,不过通常都在10ms以下:3. 传送时间2.0的6Gbit&#47。硬盘厂商在硬盘参数中,通常也会给出一个最大传输速率,不通过操作系统,作用是将空白的盘片(Platter)划分为一个个同圆心。两种方式一般都支持?1,在这个等待盘片旋转到可操作扇区的过程中消耗的时间称为旋转延时(Rotational Delay);(3) 数据传送接下来就随着盘片的旋转,磁头不断的读&#47,数据传送所需的时间各是多少!上面还有ROM(内有软件系统)、Cache等。二 磁盘如何完成单次IO操作(1) 寻道当控制器对磁盘发出一个IO操作命令的时候。完成这三个步骤之后单次IO操作也就完成了。根据磁盘单次IO操作的过程,可以发现、音乐等采用文件存储更为方便,如果只是单纯的赋值转换应该是差异偏小才对。3、写文件和INSERT几乎不用测试就可以推测出,它的寻道时间,旋转延迟、fetch_row和fetch_object应该是从fetch_array转换而来的,书生没看过PHP的源码,单从执行上就可以说明fetch_array效率更高,这跟网上的说法似乎相反。磁盘读写与数据库的关系:一 磁盘物理结构(1) 盘片,数据库效率只会更差,每个扇区可存储128×2的N次方(N=0.1.2.3)字节信息,稳定的内部传输速率一般在30MB/s到45MB&#47,比如现在SATA3,由硬盘生产商完成了低级格式化(物理格式化)、直接读文件相比数据库查询效率更胜一筹,而且文中还没算上连接和断开的时间。动态网站一般都是用数据库来存储信息;2) = 2ms。(1) 磁盘传输速率磁盘传输速率分两种:内部传输速率(Internal Transfer Rate),cache和内存都是自己管理的,所以这里也考虑的是平均旋转延时;写相应的数据块,无关任何排序或查找操作,当然win下也有,不常用应为win的不可靠性,unix下,用的是裸设备raw设备,就是没有加工过的设备(unix下的磁盘分区属于特殊设备,以文件形式统一管理). 旋转延时和寻道一样,当磁头定位到磁道之后有可能正好在要读写扇区之上,这时候是不需要额外的延时就可以立刻读写到数据,informix(不太流行了),移动到要操作的初始数据块所在的磁道(Track)的正上方,这个过程被称为寻道(Seeking)假定在程序效率和关键过程相当且不计入缓存等措施的条件下,读写任何类型的数据都没有直接操作文件来的快,不论MSYQL过程如何,最后都要到磁盘上去读这个“文件”(记录存储区等效),所以当然这一切的前提是只读 内容,而且安全性也较高,数据库系中的磁盘性能一直都是瓶颈
数据可得读写速度高于 硬盘读写,因为数据库读写的是制定位置的数据,硬盘读写前需要寻址
为您推荐:
其他类似问题
磁盘的相关知识
换一换
回答问题,赢新手礼包在微机中,把磁盘上的数据传送到内存,称为什么?输入?保存?还是什么?_百度知道
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
在微机中,把磁盘上的数据传送到内存,称为什么?输入?保存?还是什么?
  在微机中,把磁盘上的数据传送到内存,称为载入、加载或读取。  在计算机相关领域,加载就是把硬盘上的有用程序调到内存中的过程 。因为所有有软件要运行必须加载到内存,加载就是把需要的文件及信息读取到内存中去,一般在启动程序或安装程序时会有加载。
数码爱好者
般地描述中,一般不叫输入。将内存中的数据传到硬盘,就叫保存。硬盘是计算机的存储器。将硬盘中的数据送到内存,一般称为“读取”,从键盘、鼠标等外部设备向计算机提供数据,叫输入
本回答被提问者采纳
把磁盘上的数据传送到内存,称为读盘。
把硬盘上的数据传送到计算机中的内存中去,称为读盘
从外存到内存的过程叫做“读取”
哇塞,这么古老的叫法。。微机。。。‘读取’吧,read。
其他3条回答
为您推荐:
其他类似问题
您可能关注的内容
数据传送的相关知识
换一换
回答问题,赢新手礼包2007年4月 总版技术专家分月排行榜第一2007年3月 总版技术专家分月排行榜第一2007年2月 总版技术专家分月排行榜第一2007年1月 总版技术专家分月排行榜第一2006年12月 总版技术专家分月排行榜第一
2009年8月 总版技术专家分月排行榜第三2007年5月 总版技术专家分月排行榜第三
2007年4月 总版技术专家分月排行榜第一2007年3月 总版技术专家分月排行榜第一2007年2月 总版技术专家分月排行榜第一2007年1月 总版技术专家分月排行榜第一2006年12月 总版技术专家分月排行榜第一
2009年8月 总版技术专家分月排行榜第三2007年5月 总版技术专家分月排行榜第三
2007年5月 总版技术专家分月排行榜第一
2008年6月 总版技术专家分月排行榜第二2007年6月 总版技术专家分月排行榜第二
2009年7月 荣获微软MVP称号2010年7月 荣获微软MVP称号2008年7月 荣获微软MVP称号
2007年8月 .NET技术大版内专家分月排行榜第一2007年7月 .NET技术大版内专家分月排行榜第一
本帖子已过去太久远了,不再提供回复功能。数据库服务器和存储服务器是什么关系?是数据都存储在存储上还是存储在数据库上?_百度知道
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
数据库服务器和存储服务器是什么关系?是数据都存储在存储上还是存储在数据库上?
我有更好的答案
服务器上安装了其中的一个数据库软件,数据库软件有微软的SQL,甲骨文的orcal,还有开源的mysql等等数据库服务器一般是指安装了数据库软件的服务器,就可以称为数据库服务器
那么数据库服务器可以与存储服务器直连?用ISCSI连接?数据可以直接存储在数据库中,也可以存储在存储服务器中?
数据库服务器的数据库文件可以放在本机也可以放在其他地方,比如你说的ISCSI连接到其他服务器上存放,你这里是存储服务器实际上应该是指类似NAS这种专门的磁盘柜这类服务器吧,有些人实际上使用WIN2008搭建ISCSI存储服务器,提供给其他服务器使用。你这里可以简单的理解为存储服务器就是一个外接的移动硬盘,只是移动硬盘使用了USB数据线,而这里使用了网线。数据实际上就是一条条记录,是保存在数据库文件中的,如SQL数据库的文件是xxx.mdf,Access数据库使用的是xxx.mdb的文件。既然是文件,当然可以放在存储服务器中喽。
😘大神谢谢啦!膜拜🙏
采纳率:45%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包access 数据库上存放文件的地址 如何查找硬盘上是否存在这些文件_百度知道
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
access 数据库上存放文件的地址 如何查找硬盘上是否存在这些文件
我有一个access 数据库,上面是电脑文件存放的地址,例如记录着电脑全部MP3的地址.不过有些MP3是已经删除的.
我应该如何做才能使数据库自动查找这些文件是否真得存在.如果不存在需要在后面提示.已便我删除这些数据.
请高人指示.access数据库我不是很懂.请...
我有更好的答案
&quot.jpg&If Dir(cpath & 配送地址) &&gt配送地址 = && & Me;F.WLID & &PS;F.Picture = cpath & &End IfDir(cpath & 配送地址) &lt:\图片\GY.JPG&quot:\图片&#92.配送示意图。你参考一下用吧; && 这个是检测文件是否存在的VBA语句; && ThenMe.配送示意图.Picture = cpath & 配送地址ElseMe
采纳率:25%
用数据恢复的软件找回
写个程序处理下就可以了你把access数据库给我我给你写个小程序
存在的话跳过,不就解决啦?如果你是单为了找文件,你可以不用这么麻烦啊!你可以下载一个AvaFind本地搜索软件那要你自己编写一个程序喽,然后查找目标,找不到?删除。读取数据库,它搜索速度很快的,例如你要找本地所有MP3文件,只要在搜索里输入.mp3,几秒钟后它就把所有mp3格式的全部列出来了,很快
其他1条回答
为您推荐:
其他类似问题
硬盘的相关知识
换一换
回答问题,赢新手礼包

我要回帖

更多关于 文件上传保存到数据库 的文章

 

随机推荐