WEB开发网
开发学院数据库MySQL Schema的优化和索引 - 范式和非范式 阅读

Schema的优化和索引 - 范式和非范式

 2009-09-02 00:00:00 来源:WEB开发网   
核心提示: 当使用缓存和汇总表,必须要决定是否要实时维护数据或者周期性重建数据,Schema的优化和索引 - 范式和非范式(6),哪种更好完全取决与你的应用程序,但是周期性重建数据不仅仅可以节省资源,为了让例子更简单,假使你有个包含一列的计数表,还可以使结果存放在更有效率的表中,这些表不会碎片并且含有完全排

当使用缓存和汇总表,必须要决定是否要实时维护数据或者周期性重建数据。哪种更好完全取决与你的应用程序,但是周期性重建数据不仅仅可以节省资源,还可以使结果存放在更有效率的表中,这些表不会碎片并且含有完全排序的索引。

当你重建汇总和缓存表的时候,在操作的时候你常常需要它们的数据保持可见。你可以使用“shadow table”(影像表)来实现。当你已经创建它之后,你可以使用原子性的重命名来交换这些表。举个例子,如果你需要重建my_summary,你能创建my_summary_new,填充数据,把它和真正的表作交换。

mysql> DROP TABLE IF EXISTS my_summary_new, my_summary_old;
mysql> CREATE TABLE my_summary_new LIKE my_summary;
-- populate my_summary_new as desired
mysql> RENAME TABLE my_summary TO my_summary_old, my_summary_new TO my_summary;

在赋予新建表my_summary名之前,如果你把my_summary重命名为my_summary_old,你就可以保存这个表老的版本直到下次这个表的重建。如果新表出现问题,你也可以用旧的来替换。

计数表(Counter tables)

一个应用程序在一个表中存放计数字段,当更新计数字段的时候,会遇到并发问题。这些表在web应用程序中很常见。你能使用它们来缓存用户的好友数,文件的下载数等等。一般来说,创建一个单独的表来存放这些计数是个好的主意,这样做能使它更小更快。使用单独的表,可以避免无效的查询缓存并且让你使用更多的高级技术。

为了让例子更简单,假使你有个包含一列的计数表。来记录你网站的点击量。

mysql> CREATE TABLE hit_counter (
    ->    cnt int unsigned not null
    -> ) ENGINE=InnoDB;

上一页  1 2 3 4 5 6 7  下一页

Tags:Schema 优化 索引

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接