Implementazione del partizionamento per elenco
Comprenda come configurare il partizionamento per elenco, segmentando i dati in base a specifici valori discreti di una colonna.
Implementazione del partizionamento per elenco è una lezione Advanced PostgreSQL: Indexing, Partitioning, Replication gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Advanced PostgreSQL: Indexing, Partitioning, Replication, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Advanced PostgreSQL: Indexing, Partitioning, Replication include 4 lezioni in totale.
Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.
What is List Partitioning?
Welcome! In this lesson, we'll dive into List Partitioning, a powerful way to organize your data in PostgreSQL.
List partitioning divides a table based on discrete values in a specified column. Think of it as categorizing your data into distinct groups.
List vs. Range: A Quick Look
You might recall Range Partitioning from a previous lesson, which divides data based on a *range* of values (e.g., dates, IDs).
List partitioning is different: it uses specific, distinct values. For example, you could partition by country_code ('US', 'CA', 'MX') or order_status ('PENDING', 'SHIPPED', 'CANCELLED').
Choosing Your Partition Key
The column you choose to partition by is called the partition key. For list partitioning, this column should have a finite and manageable set of distinct values.
- Good candidates: Country codes, product categories, order statuses.
- Poor candidates: Timestamps, large text fields, unique IDs (too many distinct values).
Setting Up the Parent Table
First, we create the main table, known as the parent table. We specify PARTITION BY LIST and indicate the column that will serve as our partition key.
Let's create a sales table partitioned by country_code:
CREATE TABLE sales (
sale_id SERIAL,
product_id INT,
country_code CHAR(2),
amount NUMERIC(10, 2),
sale_date DATE
) PARTITION BY LIST (country_code);Defining Your Partitions
Once the parent table is ready, we create individual child partitions. Each child partition is a separate table that stores rows for specific values of the partition key.
Here, we create partitions for sales in the 'US' and 'CA':
CREATE TABLE sales_us PARTITION OF sales
FOR VALUES IN ('US');
CREATE TABLE sales_ca PARTITION OF sales
FOR VALUES IN ('CA');Data Insertion in Action
When you insert data into the parent sales table, PostgreSQL automatically directs each row to the correct child partition based on its country_code value.
Let's add some sales data and then check the individual partitions:
INSERT INTO sales (product_id, country_code, amount, sale_date) VALUES
(101, 'US', 150.75, '2023-01-05'),
(102, 'CA', 200.00, '2023-01-06'),
(103, 'US', 75.20, '2023-01-07');
SELECT * FROM sales_us;
SELECT * FROM sales_ca;Inspecting Your Partitions
It's good practice to verify that your partitions are correctly linked to the parent table. You can query PostgreSQL's catalog tables to see the inheritance structure.
This query lists child tables for 'sales':
SELECT relnamespace::regnamespace AS parent_schema,
relname AS parent_table,
c.relname AS child_table
FROM pg_class p
JOIN pg_inherits i ON p.oid = i.inhparent
JOIN pg_class c ON i.inhrelid = c.oid
WHERE p.relname = 'sales';Expanding Your Partition Scheme
As your business expands or new data categories emerge, you can easily add new partitions to your existing scheme without downtime.
Let's add a partition for Mexico ('MX') sales and insert some data:
CREATE TABLE sales_mx PARTITION OF sales
FOR VALUES IN ('MX');
INSERT INTO sales (product_id, country_code, amount, sale_date) VALUES
(104, 'MX', 120.50, '2023-01-08');
SELECT * FROM sales_mx;Handling Unknown Values with DEFAULT
What happens if you insert a country_code that isn't explicitly covered by a partition (e.g., 'GB')?
You can create a default partition to catch all values that don't match any other defined list. This prevents errors for unexpected data.
CREATE TABLE sales_default PARTITION OF sales
DEFAULT;
INSERT INTO sales (product_id, country_code, amount, sale_date) VALUES
(105, 'GB', 99.99, '2023-01-09');
SELECT * FROM sales_default;List Partitioning Quiz
Consider a table orders partitioned by list on the status column, which can be 'NEW', 'PROCESSING', 'SHIPPED', or 'CANCELLED'.
List Partitioning Summary
We've covered how to implement list partitioning in PostgreSQL. You learned to:
- Define a parent table with
PARTITION BY LIST. - Create child partitions using
FOR VALUES IN. - Route data automatically upon insertion.
- Add new partitions and handle unspecified values with a
DEFAULTpartition.
List partitioning is ideal for data with discrete, categorical values, helping organize and query your data more efficiently.
Domande Frequenti
La lezione «Implementazione del partizionamento per elenco» è gratuita?
Sì — il testo completo di «Implementazione del partizionamento per elenco» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Advanced PostgreSQL: Indexing, Partitioning, Replication, passa a CoddyKit PRO. Il corso Advanced PostgreSQL: Indexing, Partitioning, Replication include 4 lezioni in totale.
Cosa imparerò in «Implementazione del partizionamento per elenco»?
Comprenda come configurare il partizionamento per elenco, segmentando i dati in base a specifici valori discreti di una colonna. Eserciti Advanced PostgreSQL: Indexing, Partitioning, Replication con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Advanced PostgreSQL: Indexing, Partitioning, Replication?
Non è richiesta alcuna esperienza precedente. Advanced PostgreSQL: Indexing, Partitioning, Replication su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Implementazione del partizionamento per elenco»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Advanced PostgreSQL: Indexing, Partitioning, Replication?
Sì. Ogni lezione Advanced PostgreSQL: Indexing, Partitioning, Replication include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Perché il partizionamento?
- Configurazione del partizionamento per intervallo
- Implementazione del partizionamento per elenco
- Implementazione del partizionamento hash