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

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

1
ทำไมคุณต้องจัดทำดัชนี text_pattern_ops ในคอลัมน์ข้อความ
วันนี้ฐานข้อมูลเจ็ดแห่งในเจ็ดสัปดาห์แนะนำให้ฉันรู้จักกับดัชนีผู้ดำเนินการต่อ คุณสามารถจัดทำดัชนีสตริงสำหรับรูปแบบที่ตรงกับแบบสอบถามก่อนหน้านี้โดยสร้างtext_pattern_opsดัชนีระดับผู้ประกอบการตราบใดที่มีการจัดทำดัชนีเป็นตัวพิมพ์เล็ก CREATE INDEX moves_title_pattern ON movies ( (lower(title) text_pattern_ops); เราใช้text_pattern_opsเพราะชื่อเป็นข้อความประเภท หากคุณจำเป็นต้องดัชนี varchars, ตัวอักษรหรือชื่อที่ใช้ปฏิบัติการที่เกี่ยวข้อง: varchar_pattern_ops, และbpchar_pattern_opsname_pattern_ops ฉันพบตัวอย่างที่ทำให้สับสนจริงๆ ทำไมการทำเช่นนี้จึงมีประโยชน์ หากคอลัมน์เป็นข้อความประเภทจะไม่ถูกแปลงเป็นประเภทอื่น (varchar, char, name) เป็นข้อความก่อนที่จะใช้เป็นค่าการค้นหาหรือไม่ ดัชนีนั้นมีพฤติกรรมแตกต่างจากที่ใช้ตัวดำเนินการเริ่มต้นอย่างไร CREATE INDEX moves_title_pattern ON movies (lower(title));

3
VACUUM FREEZE vs. VACUUM FULL
บางคนสามารถอธิบายความแตกต่างระหว่างVACUUMPostgreSQL ประเภทนี้ได้ไหม ฉันอ่านเอกสาร แต่มันเพิ่งบอกว่าFULLล็อคตารางและFREEZE"ค้าง" สิ่งอันดับ ฉันคิดว่ามันเหมือนกัน ฉันผิดหรือเปล่า?

3
รับไฟล์ WAL จากอินสแตนซ์ AWG RDS PostgreSQL
เรามีอินสแตนซ์ Postgres RDS บน Amazon Web Services เรามีการสำรองข้อมูลอัตโนมัติที่เปิดใช้งานและเราถ่ายภาพเป็นรายวัน เราต้องการสร้างการสำรองข้อมูล 'ล่าสุด' ของอินสแตนซ์ RDS ที่เราสามารถจัดการตนเองได้ การรัน pg_dump กับอินสแตนซ์นั้นไม่เพียงพอเพราะเราต้องการที่จะสามารถกู้คืนฐานข้อมูลไปยังจุดใดก็ได้ในเวลา เราต้องการให้มีการสำรองข้อมูล RDS แบบโลคัลและไฟล์ WAL ทั้งหมดตั้งแต่มีการสำรองข้อมูลนั้น คำถาม: เป็นไปได้หรือไม่ที่จะเข้าถึงไฟล์ WAL และการสำรองข้อมูลที่ RDS สร้างขึ้นโดยอัตโนมัติในรูทีนการสำรองข้อมูล มันจะเหมาะ ฉันต้องการดาวน์โหลดสำเนาในเครื่องของพวกเขา หลังจากการตรวจสอบเบื้องต้นฉันรู้สึกว่าคำตอบของคำถามนี้คือ 'ไม่' ดูเหมือนว่า RDS จะจัดเก็บไฟล์ WAL และการสำรองข้อมูลไว้ใน S3 แต่มันทำให้เราไม่สามารถเข้าถึงได้ ฉันจะรักการยืนยัน มีวิธีอื่นในการเข้าถึงทรานแซคชัน (ไฟล์ WAL) ที่เกิดขึ้นในอินสแตนซ์ของ RDS หรือไม่? ฉันคิดว่าเราควรจะสามารถสร้างฐานข้อมูล Postgres บนธุรกรรม EC2 และ …

2
จะทำการสำรองข้อมูลเพิ่มเติมทุก ๆ ชั่วโมงใน Postgres ได้อย่างไร
กำลังพยายามสำรองข้อมูลเพิ่มรายชั่วโมงของเซิร์ฟเวอร์ Postgres เดียว (Win7 64) ฉันมีการตั้งค่าต่อไปนี้ในpostgresql.conf: max_wal_senders = 2 wal_level = archive archive_mode = on archive_command = 'copy "%p" "c:\\postgres\\foo\\%f"' (เริ่มต้นใหม่) ฉันได้สำรองฐานกับ pg_basebackup -U postgres -D ..\foo -F t -x ซึ่งทำให้base.tarไฟล์ขนาดใหญ่ในfooโฟลเดอร์และเพิ่มไฟล์ 16,384 KB ซึ่งผมถือว่าเป็น WAL สิ่งที่ผมไม่เข้าใจคือทำไม Wals ในfooไม่เปลี่ยนแปลง การdata/pg_xlogเปลี่ยนแปลงใน WAL pg ไม่ควรคัดลอกไปหรือไม่ มันจะตัดสินใจอย่างไร บางทีฉันต้องตั้งค่าarchive_timeout=3600? ฉันเห็นหลายไซต์ (รายการส่งเมลของ pg, หน้า postgres ของ …

1
โซลูชันฐานข้อมูลเก็บถาวร
ในการต่อเนื่องกับคำถามที่โพสต์โดยฉันบนมันเป็นความคิดที่ดีที่จะย้ายตารางปริมาณสูงและเข้าถึงอย่างสูงไปยังฐานข้อมูลแยกต่างหากหรือไม่ กำลังมองหาเทคนิค / โซลูชันที่แตกต่างกันสำหรับการเก็บฐานข้อมูลใน PostgreSQL วิธีแก้ปัญหาเล็กน้อยที่ฉันนึกได้คือ: การแบ่งตาราง คั่นพื้นที่ตารางและ / หรือสคีมา การย้ายระเบียน / ตารางที่เก็บถาวรไปยังฮาร์ดดิสก์อื่น คำแนะนำ / คำแนะนำ / คำแนะนำอื่น ๆ ยินดีต้อนรับและชื่นชมจริงๆ หมายเหตุ:เรากำลังเรียกใช้ PostgreSQL v9.1.3 บน CentOS5.2


1
ฉันจะคืนค่าข้อความธรรมดา postgres. backupes ได้อย่างไร
ฉันส่งออกฐานข้อมูล postgres จาก pgAdmin ในรูปแบบธรรมดาเพราะฉันต้องการค้นหาข้อความฐานข้อมูลทั้งหมด ฉันพยายามกู้คืนฐานข้อมูลกลับ แต่มีข้อผิดพลาดแจ้งว่าไฟล์เก็บถาวรไม่ใช่ไฟล์เก็บถาวรที่ถูกต้อง ฉันจะเรียกคืน db กลับมาได้อย่างไรถ้ามันสามารถกู้คืนได้?

3
การทำงานอัตโนมัติล้มเหลวใน PostgreSQL 9.1
วิธีหนึ่งทำการติดตั้งสองเซิร์ฟเวอร์ที่เหมือนกันสำหรับการเฟลโอเวอร์อัตโนมัติใน PostgreSQL 9.1 ระบบปฏิบัติการ Centos 5 PostgreSQL 9.1 รวบรวมจากแหล่งข้อมูล บัญชีผู้ใช้ postgres มีอยู่ในเครื่องทั้งสองเครื่องและมีรหัสผ่าน ssh ที่ไม่มีรหัสผ่านเพื่อเชื่อมต่อกับทั้งสองเครื่อง การตั้งค่าปัจจุบันของฉัน: การกำหนดค่าเซิร์ฟเวอร์หลัก: postgresql.conf: listen_address = '*' wal_level = hot_standby max_wal_senders = 3 checkpoint_segments = 16 wal_keep_segments = 8 archive_mode = on archive_command = 'cp "%p" /opt/pgsql91/archive/"%f"' pg_hba.conf: host replication all 10.0.66.1/32 trust host replication all 10.0.66.2/32 …

2
ทริกเกอร์: ย้ายแถวที่ถูกลบไปยังตารางเก็บถาวร
ฉันมีตารางเล็ก ๆ (~ 10 แถว) ที่เรียกว่าrestrictionsในฐานข้อมูล PostgreSQL ของฉันซึ่งค่าจะถูกลบและแทรกทุกวัน ฉันต้องการเรียกตารางrestrictions_deletedที่ซึ่งทุกแถวที่ถูกลบrestrictionsจะถูกเก็บไว้โดยอัตโนมัติ เนื่องจากrestrictionsมีรหัสซีเรียลจะไม่มีการทำซ้ำ ฉันจะเขียนทริกเกอร์ใน PostgreSQL ได้อย่างไร

4
การดำเนินการสูญญากาศ / autovacuum ใช้เวลาเท่าไหร่
ฉันจัดการฐานข้อมูลขนาดใหญ่ (หลายร้อยกิ๊ก) ที่มีตารางที่มีบทบาทหลายอย่างบางคนเก็บบันทึกนับล้าน บางตารางจะได้รับการแทรกและลบจำนวนมากเท่านั้นการเพิ่มจำนวนน้อยและการปรับปรุงจำนวนมาก ฐานข้อมูลทำงานบน PostgreSQL 8.4 บนระบบ Debian 6.0 amd64 พร้อม RAM ขนาด 16 กิกะไบต์ บางครั้งคำถามนั้นเป็นกระบวนการอัตโนมัติในตารางใช้เวลานานมาก (วัน) ในการดำเนินการให้เสร็จสมบูรณ์ ฉันต้องการที่จะบอกอย่างคร่าวๆว่าต้องใช้เวลานานเท่าไรในการสั่งการสูญญากาศโดยเฉพาะเพื่อให้สามารถตัดสินใจได้ว่าจะยกเลิกหรือไม่ นอกจากนี้หากมีตัวบ่งชี้ความคืบหน้าสำหรับการดำเนินการสูญญากาศ postgres มันจะมีประโยชน์จริงๆ แก้ไข: ฉันไม่ได้มองหาวิธีแก้ปัญหากระสุน เพียงแค่คำแนะนำคร่าวๆเกี่ยวกับจำนวนของ tuples ที่ตายแล้วหรือไบต์ I / O ที่จำเป็นก็เพียงพอที่จะตัดสินใจได้ มันน่ารำคาญจริง ๆ ที่ไม่มีเงื่อนงำเมื่อVACUUMจะเสร็จสิ้นอะไรก็ตาม ฉันเคยเห็นว่าpg_catalog.pg_stat_all_tablesมีคอลัมน์สำหรับจำนวน tuples ที่ตายแล้ว ดังนั้นจึงเป็นไปได้ที่จะมีการประมาณค่าแม้ว่ามันจะหมายถึงสิ่งที่มีANALYZEอยู่ในตารางก่อนหน้า บนมืออื่น ๆ , autovacuum_vacuum_thresholdและautovacuum_vacuum_scale_factorการตั้งค่าเพียงอย่างเดียวพิสูจน์ว่า postgres ตัวเองรู้ว่าบางสิ่งบางอย่างเกี่ยวกับจำนวนของการเปลี่ยนแปลงบนโต๊ะและอาจทำให้มันอยู่ในมือของ DBA เกินไป ฉันไม่แน่ใจว่าแบบสอบถามใดที่จะเรียกใช้เพราะเมื่อฉันเรียกใช้VACUUM VERBOSEฉันเห็นว่าไม่เพียง แต่ตารางเท่านั้น …

1
วิธีตรวจสอบการเรียงของตารางใน PostgreSQL
ฉันต้องการสคริปต์ตรวจสอบการเปรียบเทียบที่ใช้ในตารางของฉันใน PostgreSQL แต่ googling สำหรับPostgresql detect collationทำงานได้ไม่ดีสำหรับฉันและเอกสารไม่ได้ทำให้การค้นหานี้ง่าย มีใครบอกฉันได้ไหมว่าฉันจะตรวจสอบเรื่องนี้อย่างไร

4
ฉันจะสร้าง CROSS JOIN ที่หมุนได้ได้อย่างไรโดยที่ไม่ทราบนิยามของตารางที่ได้
เมื่อกำหนดสองตารางที่มีจำนวนแถวที่ไม่ได้กำหนดด้วยชื่อและค่าฉันจะแสดงCROSS JOINฟังก์ชันที่มีเครื่องหมายทับค่าของพวกมันได้อย่างไร CREATE TEMP TABLE foo AS SELECT x::text AS name, x::int FROM generate_series(1,10) AS t(x); CREATE TEMP TABLE bar AS SELECT x::text AS name, x::int FROM generate_series(1,5) AS t(x); ตัวอย่างเช่นถ้าฟังก์ชันนั้นเป็นการคูณฉันจะสร้างตาราง (การคูณ) เช่นเดียวกับด้านล่างได้อย่างไร (arg1,arg2,result)แถวเหล่านั้นทั้งหมดสามารถสร้างขึ้นได้ด้วย SELECT foo.name AS arg1, bar.name AS arg2, foo.x*bar.x AS result FROM foo CROSS JOIN bar; ดังนั้นนี่เป็นเพียงคำถามของงานนำเสนอฉันต้องการสิ่งนี้เพื่อทำงานกับชื่อที่กำหนดเอง …

4
ดึง PK และ FK ทั้งหมด
ฉันมีฐานข้อมูลขนาดใหญ่ที่ฉันต้องการแยกคีย์หลักและคีย์ต่างประเทศทั้งหมดจากแต่ละตาราง ฉันมี pgAdmin III มีวิธีการทำเช่นนี้โดยอัตโนมัติและไม่ข้ามแต่ละตารางด้วยตนเอง?

2
ฉันควรใช้สตริงบิต PostgreSQL หรือไม่
ฉันได้เรียนรู้เกี่ยวกับbit stringประเภทข้อมูลเมื่อเร็ว ๆ นี้และฉันค่อนข้างอยากรู้อยากเห็น: ที่ด้านล่างของหน้าเอกสารนี้มีประโยค: ... บวก 5 หรือ 8 ไบต์ค่าใช้จ่ายขึ้นอยู่กับความยาวของสตริง มีการจัดการสตริงบิตในภาษาอื่นเช่น PHP, Java, C #, C ++ และอื่น ๆ อย่างไรผ่านไดรเวอร์เช่น Npgsql, ODBC เป็นต้น สำหรับคำถามที่ 1 การใช้ smallint หรือ bigint จะช่วยเพิ่มประสิทธิภาพในการจัดเก็บได้มากขึ้นและอาจช่วยเพิ่มประสิทธิภาพในการทำงานเนื่องจากจำนวนเต็มได้รับการสนับสนุนทุกที่ ภาษาการเขียนโปรแกรมส่วนใหญ่จัดการการทำงานของบิตกับจำนวนเต็มอย่างง่ายดาย หากเป็นเช่นนั้นจุดประสงค์ของการแนะนำชนิดข้อมูลบิตสตริงคืออะไร เป็นเพียงกรณีที่ต้องการรูปแบบบิตจำนวนมากหรือไม่ การทำดัชนีฟิลด์บิตอาจ? ฉันอยากรู้มากขึ้นเกี่ยวกับวิธีการสร้างดัชนีฟิลด์ใน PostgreSQL สำหรับ # 2 ฉันสับสนมากกว่าอยากรู้อยากเห็น ตัวอย่างเช่นถ้าฉันเก็บมาสก์บิตวันต่อสัปดาห์ไว้ในฟิลด์บิต (7) หนึ่งบิตต่อวันโดยมีบิตต่ำสุดแทนวันจันทร์ จากนั้นฉันจะค้นหาค่าใน PHP และ C ++ ฉันจะได้อะไร …
18 postgresql 

3
วิธีปิดส่วนหัวใน psql เท่านั้น (postgresql)
ฉันใช้ PostgreSQL 9.1.X ฉันพยายามสร้างpsqlสคริปต์เพื่อพิมพ์ผลลัพธ์โดยไม่มีส่วนหัว แต่รวมส่วนท้ายด้วย http://www.postgresql.org/docs/9.1/static/app-psql.html จากเอกสารด้านบน \pset tuples_only จะปิดทั้งส่วนหัวและส่วนท้าย และ \pset footer off จะปิดท้ายกระดาษเท่านั้น มีวิธีในpsqlการปิดส่วนหัวและเก็บส่วนท้ายหรือไม่ ฉันรู้ว่ามีหลายวิธีในการแก้ไขปัญหานี้โดยใช้ shell / perl / เครื่องมือข้อความใด ๆ ก็ตามที่คุณต้องการ แต่ฉันสงสัยว่าทำไมมีการกำหนดค่าสำหรับส่วนท้าย id <--this line I don't want ---- <-- this line I don't want either 1 <-- this line, yes (1 row) <-- yes, I want …
18 postgresql  psql 

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