none
数据库求解决方案 RRS feed

  • 问题

  • 数据表大概5KW    每天±100W左右   不是真正删除  只是改变字段状态

    表字段   id     model    userid   maker   packing   createtime  

    前台客户查询需要用到model字段 like  'model%'       用户登录后台可以看自己的记录 用userid查询  添加 一次<=10W条  删除  一次<=10W条

    现在的解决方案是表分区 2张表  一张按照model(首字母a-z  0-9 )做的分区   一张按照userid(0-999  1000-1999.....)做的分区  2张表数据是一样的 前台后台客户查询速度不错 

    但是删除 (更新)按照model做的分区 速度有点慢【】   现在是发送命令到一个服务  让服务去 更新         请问在程序上或者是在数据库有没有好的优化方案   

    2011年7月16日 21:09

答案

  • 执行批删除,每次控制删除的数量,直到删除完成,这样效果要好一些,避免大面积的更新阻塞。

     


    family as water
    2011年7月17日 0:33
  • 你好,

    对大批量数据进行操作,同意Stone的观点,执行批量操作。另外,你可以使用MERGE同时对数据进行删除或更新,也可以提高效率。


    Best Regards,
    Stephanie Lv

    2011年7月19日 8:03
  • 我觉得这个跟分区关系不大,应该是索引问题.

    首先modle 方式查询索引应该是建立在了modle上,可是删除的时候可能根据uid 来删除, 由于没有索引 所以导致删除较慢.

    建议方案: 在modle 表上建立uid 的索引.

    2011年7月21日 11:26

全部回复

  • 执行批删除,每次控制删除的数量,直到删除完成,这样效果要好一些,避免大面积的更新阻塞。

     


    family as water
    2011年7月17日 0:33
  • 你好,

    对大批量数据进行操作,同意Stone的观点,执行批量操作。另外,你可以使用MERGE同时对数据进行删除或更新,也可以提高效率。


    Best Regards,
    Stephanie Lv

    2011年7月19日 8:03
  • 得根据查询、更新、删除的数据特点作精准设计,五千万的记录不见得非要分区

    分区对归档数据提高了管理效率,但要对磁盘、文件作良好设计与分布


    Try SQL Server 2008 QQ:315054403 dgdba@hotmail.com
    2011年7月20日 2:30
  • 我觉得这个跟分区关系不大,应该是索引问题.

    首先modle 方式查询索引应该是建立在了modle上,可是删除的时候可能根据uid 来删除, 由于没有索引 所以导致删除较慢.

    建议方案: 在modle 表上建立uid 的索引.

    2011年7月21日 11:26