日期:2014-05-18  浏览次数:20548 次

多用户操作一张表怎么提高性能?
我想开发一个远程管理网站,基本功能是页面上有与本地同步的文件管理器

我有两张表,一张USER存储用户信息,ID是主键,还有一张表FILE存储各个用户的当前文件信息,里面也有个ID与USER的ID相对应

现在当某个用户通过网站操作文件时,客户端就把他某个目录的文件列表加载到FILE表里,再传入网页,现在的问题是:

1.由于文件列表需要不断刷新(点击某个文件夹打开子目录或者又回到前一个目录),因此FILE表里该用户ID对应的所有记录就要不断的被添加和删除

2.当用户增加时,FILE表会同时执行大量的DML操作

这样会不会有很大的性能问题?如果每个用户建立一张对应的FILE表后期数据库会不会吃不消?

------解决方案--------------------
你要考虑你的所谓ID是否能唯一表示用户?应该取一些比较有意义的列包括组合列来当主键,这样不会造成ID频繁改动。
另外,如果不允许多个用户操作同个数据,那就要加事务,来保证数据的一致性。当然,频繁的操作很容易操作阻塞,影响性能,但是为了保证数据正确性,必须放弃一点点性能,而此时,你要做的是尽最大努力降低每次操作所需的资源和时间,这样能保证锁时间最短。
另外,可以使用一些业务上的机制来减少锁争用,比如然每个相同操作能有一定的间隔。
最后,如果file表比较大,可以考虑按照某种方式来分区,说个例子,比如你的表存放个个省市的数据,这样可以考虑按市来分区,这样每个市的人只需要读取对应的数据,就减少了对其他市的占用。
------解决方案--------------------
1楼说的比较详细了

分区的话,你根据你FILE表的内容选择合理的分区方式咯