当mysql有大量数据写入时会不会造成索引速度下降?
怎么解决?不要主从服务器。设置读优先会不会有作用?可那样会不会对表的写入影响很大?
谢谢

解决方案 »

  1.   

    写入时?写入的时候,会同时去维护索引。 如果在大量数据INSERT之前先把索引删除,等数据全INSERT完后再重建INDEX则总体上会减少时间。写入之后,不管哪种方式都没什么差别,对MYSQL来说,只不过是个数据文件和索引文件了。
      

  2.   

    会,
    详细说明情况
    可以试试将数据写入TXT中,再导入到表中。
      

  3.   

    谢谢楼上两位,#2能详细说下吗,写入txt。给个思路
      

  4.   

    写入txt,主要是导入时速度快一些(当然关闭索引),
    用LOAD DATA INFILE导入
      

  5.   

    你不是要向MYSQL中写入大量数据吗?
    将数据写入TXT中,用LOAD DATA INFILE导入TXT中的数据,在导入前DROP索引
      

  6.   

    检查一下你的MYSQL的慢查询日志,如果未打开这个功能,则打开看一下,然后进行分析。这个需要具体的一步步分析。哪个SQL语句耗时过多?
    表的存储相擎是什么?
    “大量数据持续写入” 语句是什么?
    ...这个问题和你在顶楼的问法已经基本上不是同一话题了。
      

  7.   

    慢查询和my.ini文件我已经做过优化了。数据持续写入是指每天有持续的数据更新和写入,会不会影响表的性能?怎么解决。
      

  8.   

    每天有几万条的数据更新
    每次你的说法都不一样!如果是UPDATE,则会锁表,会有影响。不过可以通过设置隔离级别来允许脏读以避免对SELECT的影响。
      

  9.   

    你的更新是什么语句? update 还是 insert ?是如何更新的?
    已经在  #10楼 问过一次了。
      

  10.   

    主要是insert,也有少量的update,select里面主要是like '%...%'这样的语句耗时多,还有像select ... where ... order by ... limit 24500,10这样的语句耗时也比较多。
      

  11.   

    一般而言,数据量大,且索引多,对插入速度的影响>查询速度,不过要根据你的SQL语句、使用索引
    情况来判断。
      

  12.   

    select里面主要是like '%...%'这样的语句耗时多
    这个 like '%...%' 是无法利用索引的,需要全表扫描,无法优化。order by ... limit 24500,10
    这种也同样,MYSQL会先扫描前24500行后再输出后10行。所以这两句即使在没有数据update/insert的时候也不会快到哪儿去。
    如果你有UPDATE,结果还会造成LOCK TABLE,这样你的SELECT 还需要等侍。