In a distributed framework, data is distributed on DNs. Data on one or more DNs is stored on a physical storage device. To properly define a table, you must:
- Evenly distribute data on each DN to avoid the available capacity decrease of a cluster caused by insufficient storage space of the storage device associated with a DN. Select proper distribution columns to avoid data skew.
- Evenly assign table scanning tasks on each DN to avoid that a DN is overloaded by the table scanning tasks. Do not select columns in the equivalent filter of a base table.
- Reduce the data volume scanned by using the partition pruning mechanism.
- Avoid the use of random I/O by using clustering or partial clustering.
- Avoid data shuffle to reduce the network pressure by selecting the join-condition or group by column as the distribution key.
The distribution key is the core for defining a table. Follow Figure 1 to define a table. The table definition is created during the database design and is reviewed and modified during the SQL statement optimization.
Figure 1 Procedure of defining a table