在2.0构架中。我并不打算分表来弄文章模块。因为分表实在太麻烦了。主要体现在业务处理上。要多写一些程序。
现在这个博客用的就是分表的方式。你可以看出来。我的文章网址是x-x.html这样的方式。其实前边的x就是分类id。之所以这样。是因为在访问文章或分类的时候。就不须要从主表中取数据了。当然。这对sqlite来说并不是缓解并发压力。而是不用where语句去筛选数据。
常规设计中。内容表都有个cateogry_id来区分分类。选择文章列表的时候会select xx from table where cid=xx
当然了where cid这个cid会影响速度。就算建立了索引也一样。总没有直接select来的快。因为当初我想让其数据量上千万。
但后来发现。这种是过度设计。以我博客与其实基于此框架的网站来看。上100万难。所以决定重新改写。改写后。数据库不再分表。仅把cid建立索引。
测试过。220万条记录。数据库大小15G左右(主要是其中某表有个大字段)。建立cid索引后。选择最后几行也才10几毫秒。
当然。这次测试有件事影响了正确性。那就是我看到有人提议把大字段剔除出来。专门建个表来存放。用这种方式分表。说大字段存在表中。影响查询速度。
所以我把数据库在的大字段删后又进行了测试。速度居然比存在慢了几十毫秒。
不过经过我测试。一个表中存在大字段。并不影响什么。除非你把它用于条件筛选。仅单纯的选择这个字段中的数据。并无什么拖慢查询的影响。