mysqldump导出的时候,是把数据放到一个内存里面。在从内存中一次性写入到文件中.
  
  然而我有1个G的.sql文件。既然要先全部写到内存中间里面去.那么我的内存使用率怎么也要比原来多1000M了(在任务管理器中)。
  
  为什么我在任务管理器中无法看到此项增加。  另外。我想我估计是把mysql收集结果的内存设置小的。所以就是内存获得一点,到内存满后就写入到文件。在清空缓存。继续重复的操作。。所以看不出任务管理器里面使用内存的明显变化。  但是我后来把set read_buffer_size=1073741824   (1G)还是无法看到内存有明显的变化,这个应该是先把数据放到这个内存里面啊。内存使用率应该飙升。然后再一次性写到文件里面啊 问题1 请问以上说明为什么内存无明显变化。  在任务管理器里面 关于mysql的进程 一个是mysqld-nt 一个是mysql 在就是一个导出的进程mysqldump..
  
   我主要想问的是这个mysqldump进程。这个进程既然是备份的进程,为什么在备份大量数据的时候内存值还是没有变列。

 问题2 为什么这个mysqldump进程也无变化

  
  

解决方案 »

  1.   

    这个内存是在MYSQLD进程启动时就分配给MYSQLD的物理内存。不管用不用,这块内存都已经被MYSQL所占领。目前已经的数据基本上都是这样操作,启动时就把内存分配好。 msyqldump 只不过是从MYSQL服务器上接收数据,然后输出,所需内存也是不会有什么变化的。
      

  2.   

    read_buffer_size 是MySql读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区,MySql会为它分配一段内存缓冲区。read_buffer_size变量控制这一缓冲区的大小。如果对表的顺序扫描请求非常频繁,并且你认为频繁扫描进行得太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能。不是给MYSQLDUMP使用的
      

  3.   


     那既然我要导出一个1G的数据到缓存中,那起码有个内存要存储这个1G的数据了。就算是MYSQLD启动时候已经分配好了。在进程管理器中,差不多也就60000K的内存。可以我这有1G的数据。起码这个mysqld的使用内存也应该飙升吧,但是为什么这个内存也不明显变化呢?
      

  4.   

    http://topic.csdn.net/u/20100506/15/d80724e1-63ba-4405-ac9f-497027140944.html参考一下这个贴子
      

  5.   


     貌似被讽刺了。 0.0·  那请问,我要增加这个mysqld-nt的内存使用,在哪里增加
      

  6.   

       我记得这个mysqld-nt 内存当使用不够的时候,会增到增长啊。。貌似他不是一个定值了。。
     使用说。。我有1G的数据,他就应该涨到1G啊。。
        那个帖子缓存是一个定值啊。所以说他满了就可以在写到文件中去了。
      

  7.   

    就是那个个buffer_size 的参数。大根有十几个。不会
      

  8.   


     其实我做了一个实验有点不清白,请ACMAIN_CHM 大哥指教一下。  我把max_allowed_packet设置为2G的大小。然后我mysqldump导出 到c:\aa.sql这个文件里面.  在这导入的过程中我不停的查看这个c:\aa.sql文件,发现这个文件的小大一直都没有变。
      
      只到最后快到导出完了,文件的小大才不断的迅速上升到1G  请问,在这导出的过程中。。这些导出1G的数据既然没有存放到内存中(因为我的任务管理器没有看到什么进程来控制存放这1G的数据。。)。。那么这1G的数据是从什么地方直接一次性进入了c:\aa.sql这个文件里面的呢?
     
      

  9.   

    其实我做了一个实验有点不清白,请ACMAIN_CHM 大哥指教一下。  我把max_allowed_packet设置为2G的大小。然后我mysqldump导出 到c:\aa.sql这个文件里面.  在这导入的过程中我不停的查看这个c:\aa.sql文件,发现这个文件的小大一直都没有变。
       
      只到最后快到导出完了,文件的小大才不断的迅速上升到1G  请问,在这导出的过程中。。这些导出1G的数据既然没有存放到内存中(因为我的任务管理器没有看到什么进程来控制存放这1G的数据。。)。。那么这1G的数据是从什么地方直接一次性进入了c:\aa.sql这个文件里面的呢?
      

  10.   

    同时看一下你的数据库的文件夹,或者DATADIR中是否有临时文件生成?