我用InnoDB建表,用java程序输入数据,因为数据量很大..所以需要同时运行很多个程序.程序当中用到事务提交!(--用事务可以减少系统消耗)但是 idbdata 数据文件超级大.要不了3个小时..就39个G...为什么啊?是不是数据库把事务给记录了下来?
可以不可以不记录事务??

解决方案 »

  1.   

    NO,
    ibdata 为innodb引擎的存储数据与索引的数据文件
    ib_logfile0与ib_logfile1为innodb引擎使用的日志文件...
      

  2.   

    即 ibdata 中为表中的数据,非日志
      

  3.   

    不可能啊??
    怎么会有这么大啊?
    我就10个表,,
    name 
    varchar(10) ,mediumText
    1个表最多封顶 15W记录...
    也就100W多一点  medium数据不到!有的mediumText会很短.能
      

  4.   

    idbdata 数据文件超级大估计和你的并发进程有关,并且你又用了事务(事务并不是在所有的时候都消耗资源少)这样innoDB会产生很多锁和快快照。 optimize 一下看看文件尺寸有没有被释放。
      

  5.   

    innoDB好象不能通过optimize 来释放磁盘文件中的空隙,好象只能通过倒出再建innodb文件再倒入实现.不知道还有没有更好的办法了。
      

  6.   


    1. 用mysqldump等工具导出数据
    2. 停止 mysqld
    3. 删除ibdata*, ib_logfile* 文件
    4. 重新启动 mysqld(这时mysqld就会自动创建 idbdata*, ib_logfile* 文件)
    5. 将到出来的数据导回去,体积才会减小。
      

  7.   

    ibdata 里面存放的是数据和UNDO LOG.
    39个G也不算大。你尽量减少你事务的SQL语句数量。那么UNDO LOG就越来越少。
      

  8.   

    MySQL的事务建议不要用 ,不是很好 不成熟