精华内容
下载资源
问答
  • Alluxio之IO选项读写类型

    千次阅读 2016-03-21 21:30:46
    一、读类型 ...如果该数据不在本地Worker的Alluxio存储,那么就将一个副本添加到本地Alluxio Worker,用于每次完整地读取数据。这是默认的读类型。  2、CACHE  如果该数据不在本地Worker的

            一、读类型

            1、CACHE_PROMOTE

            如果读取的数据在Worker上时,该数据被移动到Worker的最高层。如果该数据不在本地Worker的Alluxio存储中,那么就将一个副本添加到本地Alluxio Worker中,用于每次完整地读取数据快。这是默认的读类型。


            2、CACHE

            如果该数据不在本地Worker的Alluxio存储中,那么就将一个副本添加到本地Alluxio Worker中,用于每次完整地读取数据块。


            3、NO_CACHE

            不会创建副本。


             二、写类型

            1、CACHE_THROUGH

            数据被同步地写入到Alluxio的Worker和底层存储系统。

            

             2、MUST_CACHE

            数据被同步地写入到Alluxio的Worker。但不会被写入到底层存储系统。这是默认写类型。


             3、THROUGH

             数据被同步地写入到底层存储系统。但不会被写入到Alluxio的Worker。


             4、ASYNC_THROUGH

             数据被同步地写入到Alluxio的Worker,并异步地写入到底层存储系统。处于实验阶段。

    展开全文
  • Windows文件读写速度

    千次阅读 2013-09-01 14:27:51
    这几天在研究怎么才能加快windows文件读写速度,搜了很多文章,MSDN也看了不少。稍微给大家分享一下。 限制windows文件读写速度的瓶颈其实最终还是来源于我们硬盘的固有特性,磁盘本身的转速和硬盘的串行化工作机制...
           这几天在研究怎么才能加快windows文件读写速度,搜了很多文章,MSDN也看了不少。稍微给大家分享一下。
    
           限制windows文件读写速度的瓶颈其实最终还是来源于我们硬盘的固有特性,磁盘本身的转速和硬盘的串行化工作机制。我们所能做的只是改善软件实现方法去逼近硬盘的极限读写速度。平时我们在拷贝粘贴文件的时候,其实是用的windows本身的实现,其中有一个很大的影响速度的地方就是它们都用了windows的文件缓存机制,当你拷贝一个大文件时,windows会根据你要拷贝的文件大小缓存很大一部分到系统缓存,这时候你会看到系统缓存瞬间飙涨,机器性能大大降低。整体拷贝速度为10M/S左右。而IDE 7200转的硬盘读写速度一般能达到30M/S左右,所以浪费了很大一部分硬盘读写速度。而当我们并行读写多个文件时,速度比串行读写多个文件还要慢,这就是因为硬盘串行工作机制的限制,多文件并行操作时,时间都花在磁头摆动上了。并且在缓存读取上,命中率也将大大降低。所以我们要避免使用windows缓存机制,并尽量不要同时读写多段文件,尽量读写连续的文件块。
           一般来说,我们操作一个windows I/O句柄用的是windows文件读写系列API:CreateFile, ReadFile, WriteFile等,这些API不仅可以读写文件句柄,所有的I/O设备句柄都能通过这些API来操作。比如socket描述符,  串口描述符,管道描述符等。通过设置他们的参数,我们可以选择以不同的方式操作IO。例如CreateFile,原型如下:

    HANDLE CreateFile(
    LPCTSTR lpFileName, //指向文件名的指针
    DWORD dwDesiredAccess, //访问模式(写/读)
    DWORD dwShareMode, //共享模式
    LPSECURITY_ATTRIBUTES lpSecurityAttributes, //指向安全属性的指针
    DWORD dwCreationDisposition, //如何创建
    DWORD dwFlagsAndAttributes, //文件属性
    HANDLE hTemplateFile //用于复制文件句柄
    );

    对于读写速度,最重要的是dwFlagsAndAttributes参数,这个参数的取值可以参看MSDN,这里稍微说一下:

    Attributes:
    该参数可以接收下列属性的任意组合.除非其它所有的文件属性忽略FILE_ATTRIBUTE_NORMAL.
    FILE_ATTRIBUTE_ARCHIVE 文件将被存档,程序使用此属性来标志文件去备份或移除

    FILE_ATTRIBUTE_HIDDEN 文件被隐藏,它不会在一般文件夹列表中被装载.

    FILE_ATTRIBUTE_NORMAL 文件没有被设置任何属性.

    FILE_ATTRIBUTE_OFFLINE 文件的数据没有被立即用到。指出正在脱机使用该文件。

    FILE_ATTRIBUTE_READONLY 这个文件只可读取.程序可以读文件,但不可以在上面写入内容,也不可删除.

    FILE_ATTRIBUTE_SYSTEM 文件是系统的一部分,或是系统专用的.

    FILE_ATTRIBUTE_TEMPORARY 文件被使用后,文件系统将努力为(文件的)所有数据的迅迅访问保持一块内存。临时文件应当在程序不用时及时删除。

    Flags:

    可以接受下列标志的任意组合。

    FILE_FLAG_WRITE_THROUGH

    指示系统通过快速缓存直接写入磁盘,

    FILE_FLAG_OVERLAPPED

    指示系统初始化对象, 此操作将对进程设置一个引用计数并返回ERROR_IO_PENDING.处理完成后, 指定对象将被设置为信号状态.当你指定FILE_FLAG_OVERLAPPED时,读写文件的函数必须指定一个OVERLAPPED结构.并且. 当FILE_FLAG_OVERLAPPED被指定, 程序必须执行重叠参数(指向OVERLAPPED结构)去进行文件的读写. 这个标志也可以有超过一个操作去执行.

    FILE_FLAG_NO_BUFFERING

    指示系统不使用快速缓冲区或缓存,当和FILE_FLAG_OVERLAPPED组合,该标志给出最大的异步操作量, 因为I/O不依赖内存管理器的异步操作.然而,一些I/O操作将会运行得长一些,因为数据没有控制在缓存中.

    当使用FILE_FLAG_NO_BUFFERING打开文件进行工作时,程序必须达到下列要求:

    1. 文件的存取开头的字节偏移量必须是扇区尺寸的整倍数.
    2. 文件存取的字节数必须是扇区尺寸的整倍数.例如,如果扇区尺寸是512字节.程序就可以读或者写512,1024或者2048字节,但不能够是335,981或者7171字节.

    3. 进行读和写操作的地址必须在扇区的对齐位置,在内存中对齐的地址是扇区.尺寸的整倍数.一个将缓冲区与扇区尺寸对齐的途径是使用VirtualAlloc函数.它分配与操作系统内存页大小的整倍数对齐的内存地址.因为内存页尺寸和扇区尺寸--2都是它们的幂.这块内存在地址中同样与扇区尺寸大小的整倍数对齐.程序可以通过调用GetDiskFreeSpace来确定扇区的尺寸.

    FILE_FLAG_RANDOM_ACCESS
    指定文件是随机访问,这个标志可以使系统优化文件的缓冲.

    FILE_FLAG_SEQUENTIAL_SCAN 
    指定文件将从头到尾连续地访问.这个标志可以提示系统优化文件缓冲. 如果程序在随机访问文件中移动文件指针,优化可能不会发生;然而,正确的操作仍然可以得到保 证. 指定这个标志可以提高程序以顺序访问模式读取大文件的性能, 性能的提高在许多程序读取一些大的顺序文件时是异常明显的.但是可能会有小范围的字节遗漏.

    FILE_FLAG_DELETE_ON_CLOSE

    指示系统在文件所有打开的句柄关闭后立即删除文件.不只有你指定了FILE_FLAG_DELETE_ON_CLOSE的文件。
    FILE_SHARE_DELETE
    如果没有使用FILE_SHARE_DELETE,后续的打开文件的请求将会失败.

    FILE_FLAG_BACKUP_SEMANTICS

    WINDOWS NT:指示系统为文件的打开或创建执行一个备份或恢复操作. 系统保证调用进程忽略文件的安全选项,倘若它必须有一个特权.则相关的特权则是SE_BACKUP_NAME和SE_RESTORE_NAME.你也可以使用这个标志获得一个文件夹的句柄,一个文件夹句柄能够象一个文件句柄一样传给某些Win32函数。

    FILE_FLAG_POSIX_SEMANTICS

    指明文件符合POSIX标准.这是在MS-DOS与16位Windows下的标准.

    FILE_FLAG_OPEN_REPARSE_POINT

    指定这个标志制约NTFS分区指针.该标志不能够和CREAT_ALWAYS一起使用.

    FILE_FLAG_OPEN_NO_RECALL

    指明需要文件数据,但是将继续从远程存储器中接收.它不会将数据存放在本地存储器中.这个标志由远程存储系统或等级存储管理器系统使用.

    可以看到,有很多标志和属性可以使用,但是这里最重要的对速度影响最大的是红字部分的FILE_FLAG_NO_BUFFERING和FILE_FLAG_OVERLAPPED.

    FILE_FLAG_NO_BUFFERING就是说文件操作时不使用windows缓存机制,FILE_FLAG_OVERLAPPED则表示文件的操作将异步进行。就是说不等待I/O操作完成,读写函数便返回,这要用到重叠IO机制,自己针对IO状态做不同的事情,基本上用到的是GetOverlappedResult和WaitForMultiObject。

    当我单独使用FILE_FLAG_NO_BUFFERING时,拷贝粘贴一个400M文件大概22秒,接近20M/S的速度,但是指定FILE_FLAG_NO_BUFFERING时,文件位置,缓存大小,文件大小都有很大的限制,即都要和扇区大小对齐(见红字部分)。如果不这样,读写将失败。这的确增大了不少内存分配操作,但是速度提高却很明显。

    而当我使用FILE_FLAG_OVERLAPPED将文件分为多个部分同时读写时,发现速度反而慢了。回到开头说的,这就是硬盘本身的限制了。但是我参考Fastcopy(一个免费文件拷贝软件)源代码时,发现它也同时打开了多个文件读写。可是速度却没有慢多少。具体原因还得研究研究。

    以上都是在本地硬盘操作的情况下,没有网络的限制,而当我要在服务器上拷贝文件时,最大的瓶颈便成了网络。在这种情况下,我的想法是,服务器的硬盘读取速度应该大大高于我们的机器硬盘,所以可以将文件分多段同时读取,以争取网络带宽,而在写入时则以串行的方式写入连续的文件。这样既能充分利用网络,又能避免本地硬盘的读写速度限制。当然,具体效果还须回公司试验。

    展开全文
  • mysql千万级数据库插入速度读取速度的调整记录 2018.11.1 Mysql version 5.7.23   一般情况下mysql上百万数据读取和插入更新是没什么问题了,但到了上千万级就会出现很慢,下面我们来看mysql千万级数据库插入...

    mysql千万级数据库插入速度和读取速度的调整记录

    2018.11.1

    Mysql version 5.7.23

     

    一般情况下mysql上百万数据读取和插入更新是没什么问题了,但到了上千万级就会出现很慢,下面我们来看mysql千万级数据库插入速度和读取速度的调整记录吧。


    1、innodb_flush_log_at_trx_commit 配置设定为0;按过往经验设定为0,插入速度会有很大提高。

    0:log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行。该模式下在事务提交的时候,不会主动触发写入磁盘的操作

    1:每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去,该模式为系统默认

    2:每次事务提交时MySQL都会把log buffer的数据写入log file,但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作

    当设置为0,该模式速度最快,但不太安全,mysqld进程的崩溃会导致上一秒钟所有事务数据的丢失。

    当设置为1,该模式是最安全的,但也是最慢的一种方式。在mysqld 服务崩溃或者服务器主机crash的情况下,binary log 只有可能丢失最多一个语句或者一个事务。。

    当设置为2,该模式速度较快,也比0安全,只有在操作系统崩溃或者系统断电的情况下,上一秒钟所有事务数据才可能丢失

    2、innodb_autoextend_increment 配置由于默认8M 调整到 128M

    此配置项作用主要是当tablespace 空间已经满了后,需要MySQL系统需要自动扩展多少空间,每次tablespace 扩展都会让各个SQL 处于等待状态。增加自动扩展Size可以减少tablespace自动扩展次数。

    3、innodb_log_buffer_size 配置由于默认1M 调整到 16M

    此配置项作用设定innodb 数据库引擎写日志缓存区;将此缓存段增大可以减少数据库写数据文件次数。

    4innodb_log_file_size 配置由于默认 8M 调整到 128M

    此配置项作用设定innodb 数据库引擎UNDO日志的大小;从而减少数据库checkpoint操作。

    经过以上调整,系统插入速度由于原来10分钟几万条提升至1秒1W左右;注:以上参数调整,需要根据不同机器来进行实际调整。特别是 innodb_flush_log_at_trx_commit、innodb_log_buffer_size和 innodb_log_file_size 需要谨慎调整;因为涉及MySQL本身的容灾处理。

    MySQL 从最开始的时候 1000条/分钟的插入速度调高至 10000条/秒。 相信大家都已经等急了相关介绍,下面我做调优时候的整个过程。提高数据库插入性能中心思想: 
    1、尽量使数据库一次性写入Data File 
    2、减少数据库的checkpoint 操作 
    3、程序上尽量缓冲数据,进行批量式插入与提交 
    4、减少系统的IO冲突

    根据以上四点内容,作为一个业余DBA对MySQL服务进行了下面调整: 
    修改负责收录记录MySQL服务器配置,提升MySQL整体写速度;具体为下面三个数据库变量值:innodb_autoextend_increment、innodb_log_buffer_size、

    innodb_log_file_size;此三个变量默认值分别为 5M、8M、8M,根据服务器内存大小与具体使用情况,将此三只分别修改为:128M、16M、128M。同时,也将原来2个 Log File 变更为 8 个Log File。此次修改主要满足第一和第二点,如:增加innodb_autoextend_increment就是为了避免由于频繁自动扩展Data File而导致 MySQL 的checkpoint 操作; 
    将大表转变为独立表空并且进行分区,然后将不同分区下挂在多个不同硬盘阵列中。

    完成了以上修改操作后;我看到下面幸福结果:

    获取测试结果: 
    Query OK, 2500000 rows affected (4 min 4.85 sec) 
    Records: 2500000 Duplicates: 0 Warnings: 0 
    Query OK, 2500000 rows affected (4 min 58.89 sec) 
    Records: 2500000 Duplicates: 0 Warnings: 0 
    Query OK, 2500000 rows affected (5 min 25.91 sec) 
    Records: 2500000 Duplicates: 0 Warnings: 0 
    Query OK, 2500000 rows affected (5 min 22.32 sec)

    Records: 2500000 Duplicates: 0 Warnings: 0 
    最后表的数据量: 
    +------------+ 
    count(*) | 
    +------------+ 
    | 10000000| 
    +------------+ 
    从上面结果来看,数据量增加会对插入性能有一定影响。不过,整体速度还是非常面议。一天不到时间,就可以完成4亿数据正常处理。预计数据库瓶颈已经被巧妙解决,结果变成程序“猿”苦逼地向我埋怨,大哥不用这么狠啊。

     

    Mysql千万级别数据批量插入只需简单三步

    2018.11.3

    Mysql version 5.1.17

    文件中配置

    1、bulk_insert_buffer_size=120M 或者更大

    将insert语句的长度设为最大。

    2、Max_allowed_packet=1M

    3、Net_buffer_length=8k

    对于5.1.17版本,没有用,入库速度约1000条/秒,太慢,可能与引擎有关。如下

    确实是因为引擎错误,默认为MyISAM,后改为InnoDB,再用最上面的配置文件。

    mysql存储引擎

     

    MySQL服务器采用了模块化风格,各部分之间保持相对独立,尤其体现在存储架构上。存储引擎负责管理数据存储,以及MySQL的索引管理。通过定义的API,MySQL服务器能够与存储引擎进行通信。目前使用最多的是MyISAM和InnoDB。InnoDB被Oracle收购后,MySQL自行开发的新存储引擎Falcon将在MySQL6.0版本引进。

    MyISAM引擎是一种非事务性的引擎,提供高速存储和检索,以及全文搜索能力,适合数据仓库等查询频繁的应用。MyISAM中,一个table实际保存为三个文件,.frm存储表定义,.MYD存储数据,.MYI存储索引。

    InnoDB则是一种支持事务的引擎。所以的数据存储在一个或者多个数据文件中,支持类似于Oracle的锁机制。一般在OLTP应用中使用较广泛。如果没有指定InnoDB配置选项,MySQL将在MySQL数据目录下创建一个名为ibdata1的自动扩展数据文件,以及两个名为ib_logfile0和ib_logfile1的日志文件。

    创建table时可以通过engine关键字指定使用的存储引擎,如果省略则使用系统默认的存储引擎:CREATE TABLE t (i INT) ENGINE = MYISAM;

    查看系统中支持的存储引擎类型:

    mysql> show engines;

    mysql> show engine InnoDB status\G;

    一般安装系统默认是INNODB

    default-storage-engine=INNODB

    1.可以在启动数据库服务器时在命令行后面加上–default-storage-engine或–default-table-type选项。

    2.更灵活的方式是在随MySQL服务器发布同时提供的MySQL客户端时指定使用的存储引擎。最直接的方式是在创建表时指定存储引擎的类型,向下面这样:

    CREATE TABLE mytable (id int, titlechar(20)) ENGINE = INNODB

    修改表的存储引擎:

    ALTER TABLE engineTest ENGINE = INNODB;

    修改默认存储引擎:

    在mysql配置文件(linux下为/etc/my.cnf),在mysqld后面增加default-storage-engine=INNODB即可。

    但是如果表建立的时候是MyISAM,要更改整个数据库表的存储引擎,一般要一个表一个表的修改,比较繁琐,可以采用先把数据库导出,得到SQL,把MyISAM修改成INNODB,再导入的方式

     

    完!

    展开全文
  • 关于Windows文件读写(提高读写速度)

    千次阅读 2011-11-16 15:59:33
    这几天在研究怎么才能加快windows文件读写速度,搜了很多文章,MSDN也看了不少。稍微给大家分享一下。 限制windows文件读写速度的瓶颈其实最终还是来源于我们硬盘的固有特性,磁盘本身的转速和硬盘的串行化工作...
     
     
    
    这几天在研究怎么才能加快windows文件读写速度,搜了很多文章,MSDN也看了不少。稍微给大家分享一下。
    限制windows文件读写速度的瓶颈其实最终还是来源于我们硬盘的固有特性,磁盘本身的转速和硬盘的串行化工作机制。我们所能做的只是改善软件实现方法去逼近硬盘的极限读写速度。平时我们在拷贝粘贴文件的时候,其实是用的windows本身的实现,其中有一个很大的影响速度的地方就是它们都用了windows的文件缓存机制,当你拷贝一个大文件时,windows会根据你要拷贝的文件大小缓存很大一部分到系统缓存,这时候你会看到系统缓存瞬间飙涨,机器性能大大降低。整体拷贝速度为10M/S左右。而IDE 7200转的硬盘读写速度一般能达到30M/S左右,所以浪费了很大一部分硬盘读写速度。而当我们并行读写多个文件时,速度比串行读写多个文件还要慢,这就是因为硬盘串行工作机制的限制,多文件并行操作时,时间都花在磁头摆动上了。并且在缓存读取上,命中率也将大大降低。所以我们要避免使用windows缓存机制,并尽量不要同时读写多段文件,尽量读写连续的文件块。
    一般来说,我们操作一个windows I/O句柄用的是windows文件读写系列API:CreateFile, ReadFile, WriteFile等,这些API不仅可以读写文件句柄,所有的I/O设备句柄都能通过这些API来操作。比如socket描述符, 串口描述符,管道描述符等。通过设置他们的参数,我们可以选择以不同的方式操作IO。例如CreateFile,原型如下:

    HANDLE CreateFile(
    LPCTSTR lpFileName, //指向文件名的指针
    DWORD dwDesiredAccess, //访问模式(写/读)
    DWORD dwShareMode, //共享模式
    LPSECURITY_ATTRIBUTES lpSecurityAttributes, //指向安全属性的指针
    DWORD dwCreationDisposition, //如何创建
    DWORD dwFlagsAndAttributes, //文件属性
    HANDLE hTemplateFile //用于复制文件句柄
    );

    对于读写速度,最重要的是dwFlagsAndAttributes参数,这个参数的取值可以参看MSDN,这里稍微说一下:

    Attributes:
    该参数可以接收下列属性的任意组合.除非其它所有的文件属性忽略FILE_ATTRIBUTE_NORMAL.
    FILE_ATTRIBUTE_ARCHIVE 文件将被存档,程序使用此属性来标志文件去备份或移除

    FILE_ATTRIBUTE_HIDDEN 文件被隐藏,它不会在一般文件夹列表中被装载.

    FILE_ATTRIBUTE_NORMAL 文件没有被设置任何属性.

    FILE_ATTRIBUTE_OFFLINE 文件的数据没有被立即用到。指出正在脱机使用该文件。

    FILE_ATTRIBUTE_READONLY 这个文件只可读取.程序可以读文件,但不可以在上面写入内容,也不可删除.

    FILE_ATTRIBUTE_SYSTEM 文件是系统的一部分,或是系统专用的.

    FILE_ATTRIBUTE_TEMPORARY 文件被使用后,文件系统将努力为(文件的)所有数据的迅迅访问保持一块内存。临时文件应当在程序不用时及时删除。

    Flags:

    可以接受下列标志的任意组合。

    FILE_FLAG_WRITE_THROUGH

    指示系统通过快速缓存直接写入磁盘,

    FILE_FLAG_OVERLAPPED

    指示系统初始化对象, 此操作将对进程设置一个引用计数并返回ERROR_IO_PENDING.处理完成后, 指定对象将被设置为信号状态.当你指定FILE_FLAG_OVERLAPPED时,读写文件的函数必须指定一个OVERLAPPED结构.并且. 当FILE_FLAG_OVERLAPPED被指定, 程序必须执行重叠参数(指向OVERLAPPED结构)去进行文件的读写. 这个标志也可以有超过一个操作去执行.

    FILE_FLAG_NO_BUFFERING

    指示系统不使用快速缓冲区或缓存,当和FILE_FLAG_OVERLAPPED组合,该标志给出最
    大的异步操作量, 因为I/O不依赖内存管理器的异步操作.然而,一些I/O操作将会运行得长一些,因为数据没有控制在缓存中.

    当使用FILE_FLAG_NO_BUFFERING打开文件进行工作时,程序必须达到下列要求:

    1. 文件的存取开头的字节偏移量必须是扇区尺寸的整倍数.
    2. 文件存取的字节数必须是扇区尺寸的整倍数.例如,如果扇区尺寸是512字节.程序就可以读或者写512,1024或者2048字节,但不能够是335,981或者7171字节.

    3. 进行读和写操作的地址必须在扇区的对齐位置,在内存中对齐的地址是扇区.尺寸的整倍数.一个将缓冲区与扇区尺寸对齐的途径是使用VirtualAlloc函数.它分配与操作系统内存页大小的整倍数对齐的内存地址.因为内存页尺寸和扇区尺寸--2都是它们的幂.这块内存在地址中同样与扇区尺寸大小的整倍数对齐.程序可以通过调用GetDiskFreeSpace来确定扇区的尺寸.

    FILE_FLAG_RANDOM_ACCESS
    指定文件是随机访问,这个标志可以使系统优化文件的缓冲.

    FILE_FLAG_SEQUENTIAL_SCAN 
    指定文件将从头到尾连续地访问.这个标志可以提示系统优化文件缓冲. 如果程序在
    随机访问文件中移动文件指针,优化可能不会发生;然而,正确的操作仍然可以得到保
    证. 指定这个标志可以提高程序以顺序访问模式读取大文件的性能, 性能的提高在许多程序读取一些大的顺序文件时是异常明显的.但是可能会有小范围的字节遗漏.

    FILE_FLAG_DELETE_ON_CLOSE

    指示系统在文件所有打开的句柄关闭后立即删除文件.不只有你指定了FILE_FLAG_DELETE_ON_CLOSE的文件。
    FILE_SHARE_DELETE
    如果没有使用FILE_SHARE_DELETE,后续的打开文件的请求将会失败.

    FILE_FLAG_BACKUP_SEMANTICS

    WINDOWS NT:指示系统为文件的打开或创建执行一个备份或恢复操作. 系统保证调
    用进程忽略文件的安全选项,倘若它必须有一个特权.则相关的特权则是SE_BACKUP_NAME和SE_RESTORE_NAME.你也可以使用这个标志获得一个文件夹的句柄,一个文件夹句柄能够象一个文件句柄一样传给某些Win32函数。

    FILE_FLAG_POSIX_SEMANTICS

    指明文件符合POSIX标准.这是在MS-DOS与16位Windows下的标准.

    FILE_FLAG_OPEN_REPARSE_POINT

    指定这个标志制约NTFS分区指针.该标志不能够和CREAT_ALWAYS一起使用.

    FILE_FLAG_OPEN_NO_RECALL

    指明需要文件数据,但是将继续从远程存储器中接收.它不会将数据存放在本地存储器中.这个标志由远程存储系统或等级存储管理器系统使用.

    可以看到,有很多标志和属性可以使用,但是这里最重要的对速度影响最大的是红字部分的FILE_FLAG_NO_BUFFERING和FILE_FLAG_OVERLAPPED.

    FILE_FLAG_NO_BUFFERING就是说文件操作时不使用windows缓存机制,FILE_FLAG_OVERLAPPED则表示文件的操作将异步进行。就是说不等待I/O操作完成,读写函数便返回,这要用到重叠IO机制,自己针对IO状态做不同的事情,基本上用到的是GetOverlappedResult和WaitForMultiObject。

    当我单独使用FILE_FLAG_NO_BUFFERING时,拷贝粘贴一个400M文件大概22秒,接近20M/S的速度,但是指定FILE_FLAG_NO_BUFFERING时,文件位置,缓存大小,文件大小都有很大的限制,即都要和扇区大小对齐(见红字部分)。如果不这样,读写将失败。这的确增大了不少内存分配操作,但是速度提高却很明显。

    而当我使用FILE_FLAG_OVERLAPPED将文件分为多个部分同时读写时,发现速度反而慢了。回到开头说的,这就是硬盘本身的限制了。但是我参考Fastcopy(一个免费文件拷贝软件)源代码时,发现它也同时打开了多个文件读写。可是速度却没有慢多少。具体原因还得研究研究。

    以上都是在本地硬盘操作的情况下,没有网络的限制,而当我要在服务器上拷贝文件时,最大的瓶颈便成了网络。在这种情况下,我的想法是,服务器的硬盘读取速度应该大大高于我们的机器硬盘,所以可以将文件分多段同时读取,以争取网络带宽,而在写入时则以串行的方式写入连续的文件。这样既能充分利用网络,又能避免本地硬盘的读写速度限制。当然,具体效果还须回公司试验。

    展开全文
  • dd命令测试linux磁盘读写速度操作

    千次阅读 2018-10-18 12:31:13
    补充:Windows下安装Cygwin也可以使用time和dd命令,而且输出结果直接包含IO的时间和速度,有兴趣的朋友可以试一下,不过我测试下来的速度读写都只有40多M每秒,不知道是否是平台的原因,可能Cygwin的机制和Linux...
  • Windows文件读写(提高读写速度)

    千次阅读 2015-07-29 12:57:19
    对于读写速度重要的是dwFlagsAndAttributes参数,这个参数的取值可以参看MSDN,这里稍微说一下: Attributes: 该参数可以接收下列属性的任意组合.除非其它所有的文件属性忽略FILE_ATTRIBUTE_NORMAL. FILE_...
  • 2.处理的速度是4秒,也就是,处理速度滞后于数据的读取速度   2. UI展现 如何解读上面的统计信息:   1. Spark Streaming一共运行了1分钟35秒= 95秒 2.一共处理了23个...
  • 如何提高内存卡的读写速度

    千次阅读 2013-06-04 17:28:25
    TF和sd卡速度一般默认的不太稳定~经过测速软件测试也明显的证实了这一点(有兴趣的朋友可以测试一下),现教大家一个方便快捷,而且能让TF卡稳定的格式化方法 2G及以下用FAT,4G及以上用FAT32,不过要改下格式化的...
  • Linux下提高硬盘读写速度

    千次阅读 2012-05-15 22:36:25
    Linux命令:hdparm 功能说明:显示与设定硬盘的参数。 语 法:hdparm [-CfghiIqtTvyYZ][-a ][-A ][-c ][-d ][-k ][-K ][-m ][-n ][-p ][-P ][-r ][-S ][-u ][-W ][-X ][设备] ...-a 设定读取文件时
  • 电源选项中S1,S2,S3,S4,S5的含义

    千次阅读 2018-06-15 10:45:54
    电源选项中S1,S2,S3,S4,S5的含义 以 ACPI 的规格来说吧!ACPI(Advanced Configuration and Power Interface),即高级配置与电源接口。这种新的能源管理可以通过诸如软件控制"开关"系统,亦可以用...
  • 结尾提到,我将介绍提升轮廓提取速度相关内容,今天一起学习Android的RenderScript。看完本文,你将学会如何使用并行计算技术,提高你的app计算模块速度,尤其是提升图像处理的复杂计算。
  • GCC编译选项参数

    万次阅读 2020-08-03 18:38:19
    GCC 编译选项参数 1 常用选项 2 预处理器选项 -includefile 在处理常规输入文件之前,首先处理文件file,其结果是,文件file的内容先得到编译.命令行上任何-D'和-U’选项永远在-includefile'之前处理,无论他们在命令行...
  • 其实很简单,想要加快读写速度,其中有效的方法之一就是你需要一块高速运转的固态硬盘(SSD)。什么样的固态硬盘,才是最好的呢?说实话,仁者见仁,不同的工作应用场景,可能有不同的配置选择,今天,我们就一起为...
  • cups打印选项详解

    千次阅读 2018-10-31 15:07:27
    最近工作涉及到cups打印,需要对打印选项做精确设置,就像Windows下做的打印设置那般。 功能强大的cups是支持选项定制的。如果用命令行的形式,在lp命令-o添加options参数即可。但是,cups options参数组织复杂,...
  • Linux 内核引导选项简介

    千次阅读 2017-02-23 20:20:41
    与设备有关的引导选项多如牛毛,需要你自己阅读内核的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,...
  • 介绍make menuconfig的每个选项含义 Linux 2.6.19.x 内核编译配置选项简介 作者: 金步国 版权声明 本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布。任何人都可以自由使用、...
  • gcc优化选项

    千次阅读 2016-05-13 15:33:20
    linux gcc优化选项
  • c#总是提示“在代码运行时或者在禁用“只要一个进程中断,就中断所有进程”选项时, 不允许进行更改。 但是根据它提示的修改方法,还是提示这个。 “此选项可在“工具”->“选项”->“调试”启用。”...
  • 相关题目与解析对于外存储器,以下说法正确的是()在下列几种存储器,CPU不能直接访问的是()。A.硬盘B.内存C.CacheD.寄存器下列部件拔插时,一般应关闭微机电源的是()。A.内存B.USB设备C.硬盘D.CPU虚拟内存的数据...
  • 今天遇到一个客户,重启linux后不能启动操作系,报如下: ...由于检查一个备份的文件系统出现问题,因此,不能启动操作系统...都折磨死了,然后把pass那个选项设置为0,这样就不检查了。
  • FatFs模块功能配置选项

    万次阅读 多人点赞 2016-10-24 13:18:10
    Fatfs模块的功能可以裁剪,通过配置宏定义实现,宏定义位于文件ffconf.h。1.功能配置1.1 _FS_READONLY 使能或禁用与写相关函数。 当设置为只读(1)时,API函数f_write、f_sync、f_unlink、f_mkdir、f_chmod、f_...
  • 在深度学习模型训练过程,在服务器端或者本地pc端,输入nvidia-smi来观察显卡的GPU内存占用率(Memory-Usage),显卡的GPU利用率(GPU-util),然后采用top来查看CPU的线程数(PID数)和利用率(%CPU)。...
  • Tera copy 在速度上和最快的Fastcopy几乎没有什么分别,但这款软件的易用性非常好,安装后即在鼠标右键菜单里有专门的选项,用户只需要像平时一样选择“复制”,软件就会自动启动工作。而Fastcopy则必须进入软件界面...
  • 如上图是点击格式化时弹出的信息框,这里面有些选项可能是你不曾注意的,往往大部分的人都会直接选择 开始 直接进行格式化 但你不知道的是,只要你选择一两个选项进行简单的设置,就可以大大提升你U盘/移动磁盘的...
  • Linux内核配置选项简介

    万次阅读 2016-06-02 16:09:41
    Linux内核配置选项简介   Gentoo Linux ...选"Y"后,将会自动选中那些在Gentoo环境必须开启的内核选项,以避免用户遗漏某些必要的选项,减轻一些用户配置内核的难度.建议选"Y". Linux dy
  • gcc -o 优化选项

    千次阅读 2018-01-18 10:14:16
    优化选项查查gcc手册就知道了,每个编译选项都控制着不同的优化选项下面从网络上copy过来的,真要用到这些还是推荐查阅手册 -O设置一共有五种:-O0、-O1、-O2、-O3和-Os。 除了-O0以外,每一个-O设置都会多启用几...
  • Angular4根据url地址读取到文件的内容有时候我们需要读取到一个文件的内容并使用一个对象存储起来,等到需要使用的时候再使用,那么我们如何根据文件的url地址手动解析它呢?在网上找了多种方案尝试了一下都不尽...
  • gcc编译部分编译选项

    万次阅读 2018-01-29 14:44:10
    我只写出一些我没有在文档查到的,网上也搜索不出来什么明确的资料。正确性实在不敢保证。 https://gcc.gnu.org/onlinedocs/gcc-7.3.0/gcc/Option-Summary.html#Option-Summary 这是文档。 使用gcc命令显示的...
  • [以下几项为打开磁盘缓存的设置, 减少磁盘读写, 延长硬盘寿命]  buffer_writes: true  buffer_writes_threshold: 3000  client_buffer_size: 500000 [以下为全局上传下载速度的设置, 其中_2可以设置为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 193,031
精华内容 77,212
关键字:

以下选项中读写速度最快