[Pgpool-general] Pgpool-II - Parallel Query

calimlimvl at nationalbookstore.com.ph calimlimvl at nationalbookstore.com.ph
Tue Jul 15 02:48:36 UTC 2008


Hi,

I would like to know what the replicate_def table is for in parallel query
mode and if possible, please provide a very good example to illustrate
it's use. I am having a hard time understanding the one in the manual.
Paritioning is now working with dist_def table. I have the following
SELECT CASE statement for transaction date (type date) as the col_name:

SELECT CASE

    WHEN EXTRACT(MONTH FROM $1) = 1 AND CAST(EXTRACT(DAY FROM $1) AS
integer) > 0 AND CAST(EXTRACT(DAY FROM $1) AS integer) <= 31 THEN 0
    WHEN EXTRACT(MONTH FROM $1) = 2 AND CAST(EXTRACT(DAY FROM $1) AS
integer) > 0 AND CAST(EXTRACT(DAY FROM $1) AS integer) <= 29 THEN 0
    WHEN EXTRACT(MONTH FROM $1) = 3 AND CAST(EXTRACT(DAY FROM $1) AS
integer) > 0 AND CAST(EXTRACT(DAY FROM $1) AS integer) <= 31 THEN 0
    WHEN EXTRACT(MONTH FROM $1) = 4 AND CAST(EXTRACT(DAY FROM $1) AS
integer) > 0 AND CAST(EXTRACT(DAY FROM $1) AS integer) <= 30 THEN 0

    WHEN EXTRACT(MONTH FROM $1) = 5 AND CAST(EXTRACT(DAY FROM $1) AS
integer) > 0 AND CAST(EXTRACT(DAY FROM $1) AS integer) <= 31 THEN 1
    WHEN EXTRACT(MONTH FROM $1) = 6 AND CAST(EXTRACT(DAY FROM $1) AS
integer) > 0 AND CAST(EXTRACT(DAY FROM $1) AS integer) <= 30 THEN 1
    WHEN EXTRACT(MONTH FROM $1) = 7 AND CAST(EXTRACT(DAY FROM $1) AS
integer) > 0 AND CAST(EXTRACT(DAY FROM $1) AS integer) <= 31 THEN 1
    WHEN EXTRACT(MONTH FROM $1) = 8 AND CAST(EXTRACT(DAY FROM $1) AS
integer) > 0 AND CAST(EXTRACT(DAY FROM $1) AS integer) <= 31 THEN 1

    WHEN EXTRACT(MONTH FROM $1) = 9 AND CAST(EXTRACT(DAY FROM $1) AS
integer) > 0 AND CAST(EXTRACT(DAY FROM $1) AS integer) <= 30 THEN 2
    WHEN EXTRACT(MONTH FROM $1) = 10 AND CAST(EXTRACT(DAY FROM $1) AS
integer) > 0 AND CAST(EXTRACT(DAY FROM $1) AS integer) <= 31 THEN 2
    WHEN EXTRACT(MONTH FROM $1) = 11 AND CAST(EXTRACT(DAY FROM $1) AS
integer) > 0 AND CAST(EXTRACT(DAY FROM $1) AS integer) <= 30 THEN 2
    WHEN EXTRACT(MONTH FROM $1) = 12 AND CAST(EXTRACT(DAY FROM $1) AS
integer) > 0 AND CAST(EXTRACT(DAY FROM $1) AS integer) <= 31 THEN 2

END

Question: Will this improve the speed of the query since I specifically
indicated the day range as well as the month or will this add overhead and
should stick to the simpler month-range statement? By the way, I did CAST
because it produces an error without CASTing the double-precision data
type (DAY). Month-range statement is like:

SELECT CASE WHEN EXTRACT(MONTH FROM $1) > 0 AND EXTRACT(MONTH FROM $1) <=
4 THEN 0

I have 3 backends: node0, node1, node2
I am planning to partition my very large data by transaction dates (by
quarters ... months 1-4, 5-8 and 9-12)

Anyone? Please help me understand replicate_def table better as well.
Thank you.

Regards,
Viril Calimlim



More information about the Pgpool-general mailing list