36 lines
1.1 KiB
SQL
36 lines
1.1 KiB
SQL
--
|
|
-- generate one year of fake chat data
|
|
--
|
|
INSERT INTO chats (created_at)
|
|
SELECT generate_series(
|
|
'2022-01-01'::timestamptz,
|
|
'2022-01-07 23:00:00'::timestamptz,
|
|
interval '1 hour');
|
|
|
|
INSERT INTO chat_messages (created_at, chat_id, chat_created_at, message)
|
|
SELECT
|
|
mca,
|
|
chats.id,
|
|
chats.created_at,
|
|
(SELECT ($$[0:3]={'hello','goodbye','How are you today','I am fine'}$$::text[])[trunc(random() * 4)::int])
|
|
FROM chats
|
|
CROSS JOIN LATERAL (
|
|
SELECT generate_series(
|
|
chats.created_at,
|
|
chats.created_at + interval '1 day',
|
|
interval '1 minute') AS mca) b;
|
|
|
|
CALL app.load_chats_partitions();
|
|
CALL app.load_chat_messages_partitions();
|
|
CALL app.update_chat_sequences();
|
|
--
|
|
-- Now schedule a job to create new partitions for "tomorrow" every night
|
|
--
|
|
SELECT cron.schedule('new-chat-partition', '0 0 * * *', 'CALL app.load_app_partitions(now()::date)');
|
|
--
|
|
--
|
|
-- After bulk loading data, tables should be vacuumed and analyzed.
|
|
-- This cannot be done inside a transaction block.
|
|
--
|
|
VACUUM ANALYZE app.chats, app.chat_messages;
|