คำถามติดแท็ก postgresql

PostgreSQL ทุกรุ่น เพิ่มแท็กเฉพาะรุ่นเพิ่มเติมเช่น postgresql-11 หากบริบทนั้นสำคัญ

3
สิ่งที่ดึงมาจากดิสก์ในระหว่างการสืบค้น?
คำถามธรรมดาค่อนข้างน่าจะมีคำตอบอยู่บ้าง แต่ฉันไม่สามารถสร้างคำถามค้นหาที่เหมาะสมสำหรับ Google ... จำนวนคอลัมน์ในตารางใดตารางหนึ่งมีผลต่อประสิทธิภาพของแบบสอบถามหรือไม่เมื่อทำการสอบถามในชุดย่อยของตารางนั้น ตัวอย่างเช่นหากตาราง Foo มี 20 คอลัมน์ แต่แบบสอบถามของฉันเลือกเพียง 5 คอลัมน์เหล่านั้นจะมีคอลัมน์ 20 (เทียบกับพูด 10) มีผลต่อประสิทธิภาพการค้นหาหรือไม่ สมมติว่าความเรียบง่ายนั้นมีอะไรรวมอยู่ใน WHERE clause ในคอลัมน์ 5 คอลัมน์เหล่านั้น ฉันกังวลเกี่ยวกับการใช้แคชบัฟเฟอร์ของ Postgres นอกเหนือจากดิสก์แคชของระบบปฏิบัติการ ฉันไม่เข้าใจการออกแบบที่จัดเก็บข้อมูลจริงของ Postgres ตารางถูกเก็บไว้ในหลาย ๆ หน้า (ขนาดเริ่มต้นที่ 8k ต่อหน้า) แต่ฉันไม่เข้าใจว่าจะมีการจัดเรียงทูเปิลอย่างไร PG ฉลาดพอที่จะดึงข้อมูลจากดิสก์ที่ประกอบด้วยคอลัมน์ 5 คอลัมน์เหล่านั้นได้หรือไม่

2
การทำความเข้าใจรูปแบบเวลาของคำสั่งอธิบาย - Postgres
เมื่อฉันเรียกใช้คำสั่งอธิบายวิเคราะห์ในแบบสอบถามที่ระบุฉันมีเวลายากที่จะตีความค่าเวลาเอาท์พุท ตัวอย่างเช่น (เวลาจริง = 8163.890..8163.893) ทศนิยมภายในแสดงถึงอักขระที่ซ้ำกันหรือไม่? ขออภัยนี่อาจเป็นคำถามที่ไม่มีเสียงรบกวน แต่ฉันต้องการตรวจสอบให้แน่ใจว่าฉันตีความผลลัพธ์อย่างถูกต้อง -> GroupAggregate (cost=2928781.21..2929243.02 rows=1 width=27712) (actual time=8163.890..8163.893 rows=1 loops=1)

2
ฉันจะระบุได้อย่างไรว่าคอลัมน์ควรเพิ่มขึ้นอัตโนมัติใน pgAdmin
ฉันได้เริ่มเรียนรู้ pgAdmin III เพื่อจัดการฐานข้อมูล PostgreSQL แต่มันไม่ใช่แอพพลิเคชั่นที่ใช้งานง่าย หากฉันสร้างหรือสร้างตารางด้วย pgAdmin III ฉันจะเพิ่ม "ฟังก์ชันเพิ่มค่าอัตโนมัติ" ในคอลัมน์รหัสที่มีจำนวนเต็มประเภทได้อย่างไร

2
วิธีติดตามความคืบหน้าของการถ่ายโอนข้อมูล postrgresql ขนาดใหญ่
มีวิธีดูความคืบหน้าของการpg_dumpดำเนินการกับฐานข้อมูลขนาดใหญ่ (เช่น> 1GB) หรือไม่ การเพิ่ม-vตัวเลือกเพียงแค่ทิ้งข้อความบนหน้าจอ แต่ไม่ได้ให้ข้อมูลการติดตามที่มีความหมายกับฉันมากนัก

5
จะตรวจสอบใบรับรอง SSL ของเซิร์ฟเวอร์ PostgreSQL ได้อย่างไร
สมมติว่ามีเซิร์ฟเวอร์ PostgreSQL ทำงานอยู่และเปิดใช้งาน SSL แล้ว การใช้เครื่องมือ "มาตรฐาน" Linux และ PostgreSQL ฉันจะตรวจสอบใบรับรอง SSL ได้อย่างไร openssl x509 -text ...ฉันหวังสำหรับการส่งออกคล้ายกับสิ่งที่คุณจะได้รับจากการทำงาน และฉันหวังว่าจะได้รับคำตอบจากบรรทัดคำสั่งหนึ่งหรือสองซับดังนั้นฉันไม่ต้องหันไปใช้แพ็คเก็ตดมกลิ่น ฉันไม่สามารถเข้าถึงเซิร์ฟเวอร์ PostgreSQL ดังนั้นฉันจึงไม่สามารถดูไฟล์การกำหนดค่าได้โดยตรง ฉันไม่ได้ลงชื่อเข้าใช้ superuser ดังนั้นฉันจึงไม่สามารถรับค่าของการssl_cert_fileตั้งค่าpg_read_fileได้ การใช้openssl s_client -connect ...ไม่ทำงานเนื่องจาก PostgreSQL ดูเหมือนจะไม่ต้องการจับมือ SSL ทันที จากการดูpsqlเอกสารอย่างรวดเร็วฉันไม่สามารถหาพารามิเตอร์บรรทัดคำสั่งที่ทำให้มันแสดงข้อมูลเมื่อเริ่มต้น (แม้ว่ามันจะแสดงข้อมูลตัวเลขบางอย่างให้ฉัน)

1
วิธีการแทนที่ข้อมูลตารางใน PostgreSQL
ฉันต้องการแทนที่เนื้อหาทั้งหมดของตารางโดยไม่กระทบกับSELECTคำสั่งที่เข้ามาในระหว่างกระบวนการ กรณีการใช้งานคือการมีตารางที่เก็บข้อมูลกล่องจดหมายที่แตกเป็นประจำและจะต้องเก็บไว้ในตาราง PostgreSQL มีไคลเอนต์จำนวนมากที่ใช้แอปพลิเคชันที่สืบค้นตารางเดียวกันตลอดเวลา โดยปกติฉันจะทำสิ่งที่ชอบ (pseudocode ขาเข้า) ... BEGIN TRANSACTION TRUNCATE TABLE INSERT INTO COMMIT แต่น่าเสียดายที่ตารางไม่สามารถอ่านได้ในระหว่างกระบวนการนี้ เนื่องจากเวลาที่ใช้INSERT INTOในการทำให้เสร็จสมบูรณ์ ตารางถูกล็อค ใน MySQL ฉันจะใช้RENAME TABLEคำสั่งatomic เพื่อหลีกเลี่ยงปัญหาเหล่านี้ ... CREATE TABLE table_new LIKE table; INSERT INTO table_new; RENAME TABLE table TO table_old, table_new TO table; *atomic operation* DROP TABLE table_old; ฉันจะบรรลุสิ่งนี้ใน PostgreSQL ได้อย่างไร สำหรับวัตถุประสงค์ของคำถามนี้คุณสามารถสมมติว่าฉันไม่ได้ใช้กุญแจต่างประเทศ
14 postgresql 

1
วิธีการจัดทำดัชนีของแบบสอบถามด้วยฟิลด์ WHERE IS NULL คืออะไร
ฉันมีตารางที่มีจำนวนมากแทรกการตั้งค่าหนึ่งของฟิลด์ ( uploaded_at) NULLเพื่อ จากนั้นภารกิจตามระยะเวลาจะเลือกสิ่งอันดับทั้งหมดWHERE uploaded_at IS NULLประมวลผลและอัปเดตตั้งค่าuploaded_atเป็นวันที่ปัจจุบัน ฉันควรจัดทำดัชนีตารางอย่างไร ฉันเข้าใจว่าฉันควรใช้ดัชนีบางส่วนเช่น: CREATE INDEX foo ON table (uploaded_at) WHERE uploaded_at IS NULL หรือว่าอย่างนั้น ฉันบิตสับสน NULLแต่ถ้ามันเป็นสิ่งที่ถูกต้องเพื่อดัชนีในเขตข้อมูลที่อยู่เสมอ หรือถ้ามันถูกต้องที่จะใช้ดัชนี b-tree Hash ดูเหมือนเป็นความคิดที่ดีกว่า แต่ล้าสมัยและไม่ได้รับการจำลองแบบผ่านการสตรีมการจำลองแบบ hot-standby คำแนะนำใด ๆ ที่จะได้รับการชื่นชมอย่างมาก ฉันได้ทดลองเล็กน้อยด้วยดัชนีต่อไปนี้: "foo_part" btree (uploaded_at) WHERE uploaded_at IS NULL "foo_part_id" btree (id) WHERE uploaded_at IS NULL และตัววางแผนแบบสอบถามดูเหมือนว่าจะเลือกfoo_partดัชนีเสมอ explain analyseยังให้ผลลัพธ์ที่ดีขึ้นเล็กน้อยสำหรับfoo_partดัชนี: …

3
เปรียบเทียบฐานข้อมูล Postgres ที่คล้ายกันสองฐานเพื่อหาความแตกต่าง
ฉันดาวน์โหลดชุดข้อมูลที่เปิดเผยต่อสาธารณชนเป็นครั้งคราวในรูปแบบของ Postgres dBs ชุดข้อมูลเหล่านี้ได้รับการปรับปรุง / แก้ไข / ขยายเมื่อเวลาผ่านไปโดยโฮสต์ที่เก็บ มีคำสั่ง Postgres หรือเครื่องมือ (FOSS ในอุดมคติ) ที่สามารถแสดงความแตกต่างระหว่างฐานข้อมูล OLD และ NEW Postgres ได้หรือไม่? (ข้อสันนิษฐานการทำงานคือ 95% ของรายการไม่มีการเปลี่ยนแปลงและตารางและความสัมพันธ์จะไม่เปลี่ยนแปลง)

3
ฉันจะคืนค่าเรคคอร์ดหลายแถวใน PL / pgSQL ได้อย่างไร
ฉันกำลังพยายามส่งคืนหลายระเบียนโดยใช้ชนิดข้อมูล RECORD มีวิธีที่ฉันสามารถผนวกเข้ากับ RECORD และเพิ่ม / ผนวกค่าใหม่ด้วยการวนซ้ำแต่ละครั้งในการบันทึกนี้ นั่นคือฉันต้องการผนวกrecเพื่อที่recจะกลายเป็นชุดของแถวเมื่อวนซ้ำซึ่งฉันสามารถกลับมาที่ส่วนท้ายของฟังก์ชั่นของฉัน ขณะนี้ฉันกำลังทำสิ่งนี้ - SELECT temp_table.col1, temp_table.col2, temp_table.col3 INTO rec FROM temp_table WHERE temp_table.col3 = false; รหัสเต็มของฉันอยู่ที่นี่: CREATE OR REPLACE FUNCTION validation() RETURNS RECORD AS $$ DECLARE rec RECORD; temp_row RECORD; BEGIN CREATE TEMPORARY TABLE temp_table (col1 TEXT, col2 INTEGER, col3 BOOLEAN) ON COMMIT …

3
รูปแบบที่ถูกต้องของชื่อสกีมา PostgreSQL คืออะไร
ฉันไม่พบเอกสารที่อธิบายรูปแบบที่ถูกต้องของชื่อสกีมา PostgreSQL ฉันรู้ว่าชื่อสคีมาไม่สามารถ: เริ่มต้นด้วยตัวเลข มีช่องว่าง เริ่มกับ pg_ มีอะไรอีกบ้าง? ฉันควรมองที่ไหน
14 postgresql 

1
การสืบค้น JSONB ใน PostgreSQL
ฉันมีตารางpersonsซึ่งมีสองคอลัมน์และคอลัมน์ที่idใช้ JSONB data(ตารางนี้เพิ่งสร้างขึ้นเพื่อวัตถุประสงค์ในการสาธิตเพื่อเล่นกับการสนับสนุน JSON ของ PostgreSQL) ตอนนี้มันควรจะมีสองบันทึก: 1, { name: 'John', age: 30 } 2, { name: 'Jane', age: 20 } ตอนนี้ฉันควรจะได้ชื่อของทุกคนที่อายุมากกว่า 25 แล้วสิ่งที่ฉันได้ลองคือ: select data->'name' as name from persons where data->'age' > 25 น่าเสียดายที่นี่ทำให้เกิดข้อผิดพลาด ฉันสามารถแก้ไขได้โดยใช้->>แทน->แต่จากนั้นการเปรียบเทียบไม่ทำงานตามที่คาดไว้อีกต่อไปเนื่องจากไม่ใช่การเปรียบเทียบตัวเลข แต่การแสดงเป็นสตริง select data->'name' as name from persons where data->>'age' > '25' จากนั้นฉันก็พบว่าฉันสามารถแก้ปัญหาได้จริงโดยใช้->และนักแสดงไปที่int: select data->'name' …

4
มีวิธีแสดงคำสั่งการสร้างสำหรับดัชนีใน PostgreSQL
ฉันต้องสร้างดัชนีใหม่ใน PostgreSQL ซึ่งได้รับความเดือดร้อนดัชนีขยายตัว เนื่องจากฉันต้องการให้ดัชนีใช้งานได้ในขณะที่กำลังสร้างฉันไม่สามารถใช้ REINDEX ได้ ฉันจะสร้างดัชนีใหม่ด้วยชื่อใหม่แล้วปล่อยดัชนีเก่า มีวิธีใดบ้างที่จะเห็นคำสั่ง SQL ที่ใช้สร้างดัชนีเพื่อให้ฉันสามารถคัดลอกได้?
14 postgresql  index 

2
ปัญหา PostgreSQL UPSERT ด้วยค่า NULL
ฉันมีปัญหากับการใช้คุณสมบัติใหม่ของ UPSERT ใน Postgres 9.5 ฉันมีตารางที่ใช้สำหรับรวบรวมข้อมูลจากตารางอื่น คีย์ผสมประกอบด้วย 20 คอลัมน์โดย 10 ซึ่งสามารถเป็นโมฆะได้ ด้านล่างฉันได้สร้างรุ่นที่เล็กกว่าของปัญหาที่ฉันมีโดยเฉพาะกับค่าเป็นศูนย์ CREATE TABLE public.test_upsert ( upsert_id serial, name character varying(32) NOT NULL, status integer NOT NULL, test_field text, identifier character varying(255), count integer, CONSTRAINT upsert_id_pkey PRIMARY KEY (upsert_id), CONSTRAINT test_upsert_name_status_test_field_key UNIQUE (name, status, test_field) ); การเรียกใช้คิวรีนี้ทำงานได้ตามต้องการ (แทรกครั้งแรกจากนั้นแทรกตามมาก็เพิ่มจำนวน): INSERT INTO …

1
ทำไม PostgreSQL จึงเลือกการเข้าร่วมที่มีราคาแพงกว่า?
PostgreSQL ใช้ค่าเริ่มต้นบวก default_statistics_target=1000 random_page_cost=1.5 รุ่น PostgreSQL 10.4 on x86_64-pc-linux-musl, compiled by gcc (Alpine 6.4.0) 6.4.0, 64-bit ฉันดูดและวิเคราะห์แล้ว แบบสอบถามตรงไปตรงมามาก: SELECT r.price FROM account_payer ap JOIN account_contract ac ON ap.id = ac.account_payer_id JOIN account_schedule "as" ON ac.id = "as".account_contract_id JOIN schedule s ON "as".id = s.account_schedule_id JOIN rate r ON s.id = …

1
ทำไม LEFT JOIN นี้ถึงทำงานแย่กว่า LEAT JOIN LATERAL มากนัก?
ฉันมีตารางต่อไปนี้ (นำมาจากฐานข้อมูล Sakila): film: film_id คือ pkey นักแสดง: actor_id คือกุญแจ film_actor: film_id และ actor_id เป็น fkeys สำหรับภาพยนตร์ / นักแสดง ฉันกำลังเลือกภาพยนตร์เฉพาะเรื่อง สำหรับหนังเรื่องนี้ฉันต้องการให้นักแสดงทุกคนเข้าร่วมในภาพยนตร์เรื่องนี้ด้วย ฉันมีสองคำสั่งสำหรับการนี้: หนึ่งที่มีและเป็นหนึ่งเดียวกับLEFT JOINLEFT JOIN LATERAL select film.film_id, film.title, a.actors from film left join ( select film_actor.film_id, array_agg(first_name) as actors from actor inner join film_actor using(actor_id) group by film_actor.film_id ) …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.