包含数百万行的日志表。怎么办?

时间:2010-10-06 16:12:11

标签: sql-server database

我有一个包含数百万行的日志表。我正在考虑将数据分成多个表(即LoginHistory,ExceptionHistroy,PaymentProcessingHistory等)。在使用包含许多行(而不是列)的大型表并创建多个表时使用的术语是什么?

我当前的日志表架构类似于:LogID,LogMessage,LogReason,LoggedBy,LoggedOn等。

我认为问题是我在一张桌子上放了太多东西?表格可能过于通用了吗?

由于

3 个答案:

答案 0 :(得分:3)

它被称为数据分区。

答案 1 :(得分:3)

Sharding是de jour这个词。从链接:

  

水平分区是一种数据库设计原则,数据库表的行是分开保存的,而不是按列分割(对于规范化)。每个分区都构成分片的一部分,而分片又可以位于单独的数据库服务器或物理位置。

答案 2 :(得分:2)

我认为您应该关注横向分区。水平分区或多或少是分片的一个子集。

有关水平分区的更多详细信息,请参阅维基百科链接:
http://en.wikipedia.org/wiki/Partition_%28database%29

您没有提到您使用的数据库技术,但这里有一些技术链接可以帮助您分割数据:

IBM DB2 partitioning
MySQL partitioning
Oracle partitioning
SQL Server partitions
PostgreSQL partitioning
Sybase ASE 15.0 partitioning