
查询、建模和转换
|
249
OLAP
数据库还提供了额外的工具来优化你的表以提高查询性能。例如,如果你有一个
非常大的表(几
TB
或更大),
Snowflake
和
BigQuery
允许你在表上定义一个集群键,它
可以将数据排序,从而更高效地访问非常大的数据集。
BigQuery
还允许你将表分割成更
小的部分,允许你只查询特定的部分,而不是整个表。(请注意,不适当的聚类和键分配
策略会降低性能。)
在行式数据库中,剪枝通常以表索引为中心,这一点你在第
6
章中学过。一般的策略是
创建表索引以提高对性能最敏感的查询的性能,同时不要让表的索引太多,以免降低
性能。
了解你的数据库如何处理提交
数据库的
提交
是指在数据库中产生的一个变更,如创建、更新或删除一条记录、表或其
他数据库对象。许多数据库都支持
事务
,即以一种保持一致状态的方式同时提交几个操
作的概念。请注意,
事务
这个词有点过重了,参见第
5
章。事务的目的是在数据库处于
健康状态和发生故障时,保持数据库的一致状态。当多个并发事件在同一数据库对象中
进行读、写和删除时,事务也会处理隔离问题。如果没有事务,用户在查询数据库时就
会得到潜在的不一致的信息。
你应该非常熟悉你的数据库如何处理提交和事务,并确认查询结果预期的一致性。你的
数据库是否以符合
ACID
标准的方式处理写入和更新?如果不符合
ACID
,你的查询可
能会返回意外的结果。这可能是由于脏读造成的,脏读是指在一行数据被读取的同时,
另一个未提交的事务改变了该行数据。脏读是你数据库的预期行为吗?如果是的话,你
是如何处理的?另外