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

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

4
แบบสอบถาม PostgreSQL เดียวสามารถใช้หลายคอร์ได้หรือไม่?
ในรุ่นล่าสุดของ PostgreSQL (ณ เดือนธันวาคม 2013) เราสามารถแบ่งปันแบบสอบถามระหว่างสองคอร์หรือมากกว่านั้นเพื่อรับประสิทธิภาพที่เพิ่มขึ้นได้หรือไม่ หรือเราควรจะได้รับแกนเร็วขึ้น?

12
PostgreSQL ไม่ทำงานบน Mac
ข้อผิดพลาดในการอ่านทั้งหมด: psql: ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว เซิร์ฟเวอร์ทำงานอยู่ภายในเครื่องและยอมรับการเชื่อมต่อบนซ็อกเก็ตโดเมน Unix "/tmp/.s.PGSQL.5432" หรือไม่ นี่เป็นครั้งที่สองที่ฉันตั้งค่า Postgresql ผ่าน Homebrew บน Mac ของฉันและฉันก็ไม่รู้ว่าเกิดอะไรขึ้น ก่อนหน้านี้มันได้ทำงาน เมื่อถึงจุดหนึ่งฉันต้องป้อนคำสั่งที่ทำให้เกิดความสับสน ฉันไม่แน่ใจ. ตอนนี้เมื่อใดก็ตามที่ฉันป้อนคำสั่ง SQL จากบรรทัดคำสั่งฉันได้รับข้อความด้านบน ฉันใช้คำสั่งเพื่อตรวจสอบว่าเซิร์ฟเวอร์ทำงานอยู่หรือไม่และเห็นได้ชัดว่าไม่ใช่ หากฉันพยายามเริ่มต้นเซิร์ฟเวอร์โดยใช้ $ postgres -D / usr / local / pgsql / data ฉันได้รับข้อผิดพลาดต่อไปนี้: postgres ไม่สามารถเข้าถึงไฟล์การกำหนดค่าเซิร์ฟเวอร์ "/usr/local/pgsql/data/postgresql.conf": ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว ฉันถอนการติดตั้งและติดตั้ง Postgresql ใหม่ผ่าน Homebrew แล้ว แต่ปัญหายังคงอยู่ ฉันตกอยู่ในความสูญเสียอย่างสิ้นเชิงกับวิธีการทำงานนี้ ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม
55 postgresql 

4
วิธีการเรียกใช้ psql บน Mac OS X
ฉันติดตั้ง PostgreSQL บนคอมพิวเตอร์ที่มี Mac OS X โดยใช้ตัวติดตั้งแบบคลิกเดียว จากนั้นฉันพยายามเข้าถึง PostgreSQL โดยใช้psqlคำสั่ง แต่ดูเหมือนจะไม่พร้อมใช้งาน ฉันได้รับข้อความนี้: psql -bash: psql: command not found ฉันต้องติดตั้งอะไรเพิ่มเติมหรือไม่ หรือฉันจะกำหนดค่า PostgreSQL เพื่อให้สามารถใช้กับคอมพิวเตอร์ได้อย่างไร

3
ฉันจะแทรกแถวซึ่งมีรหัสต่างประเทศได้อย่างไร
ใช้ PostgreSQL v9.1 ฉันมีตารางต่อไปนี้: CREATE TABLE foo ( id BIGSERIAL NOT NULL UNIQUE PRIMARY KEY, type VARCHAR(60) NOT NULL UNIQUE ); CREATE TABLE bar ( id BIGSERIAL NOT NULL UNIQUE PRIMARY KEY, description VARCHAR(40) NOT NULL UNIQUE, foo_id BIGINT NOT NULL REFERENCES foo ON DELETE RESTRICT ); สมมติว่าตารางแรกfooมีข้อมูลประชากรเช่นนี้: INSERT INTO …

6
ฉันจะรับ "แถวที่สอดคล้องกันล่าสุด" อย่างมีประสิทธิภาพได้อย่างไร
ฉันมีรูปแบบแบบสอบถามที่ต้องพบบ่อยมาก แต่ฉันไม่รู้วิธีเขียนแบบสอบถามที่มีประสิทธิภาพ ฉันต้องการค้นหาแถวของตารางที่ตรงกับ "วันที่ล่าสุดไม่หลัง" แถวของตารางอื่น ฉันมีตารางinventoryพูดซึ่งแสดงถึงสินค้าคงคลังที่ฉันถือในวันหนึ่ง date | good | quantity ------------------------------ 2013-08-09 | egg | 5 2013-08-09 | pear | 7 2013-08-02 | egg | 1 2013-08-02 | pear | 2 และโต๊ะ "ราคา" พูดซึ่งถือราคาสินค้าในวันที่กำหนด date | good | price -------------------------- 2013-08-07 | egg | 120 2013-08-06 | pear | …

7
เป็นไปได้หรือไม่ที่จะสร้าง / กู้คืนสแน็ปช็อตฐานข้อมูลด้วย PostgreSQL อย่างรวดเร็ว
ก่อนอื่นฉันเป็นนักพัฒนาไม่ใช่ DBA หรือดูแลระบบ กรุณาอ่อนโยน :) ฉันกำลังทำงานกับเวิร์กโฟลว์แอปพลิเคชันซึ่งการกระทำของผู้ใช้เพียงคนเดียวจะทำให้เกิดการเปลี่ยนแปลงที่ซับซ้อนในฐานข้อมูล - สร้างหลายร้อยระเบียนในบางตารางปรับปรุงหลายร้อยระเบียนในที่อื่น ๆ ฯลฯ ทั้งหมดในทั้งหมดประมาณ 12 ตาราง (จาก ~ 100 ) ได้รับการสัมผัสจากการกระทำนี้ เนื่องจากความซับซ้อนมันยากมากสำหรับฉันที่จะย้อนกลับการเปลี่ยนแปลงทั้งหมดด้วยตนเองก่อนที่ฉันจะสามารถทำการทดสอบอื่นได้ ในช่วงเวลาส่วนใหญ่ของฉันฉันสามารถแทรกคำสั่ง "ย้อนกลับ" ใกล้ถึงจุดสิ้นสุดของเวิร์กโฟลว์ แต่เมื่อฉันเข้าใกล้การยอมรับการเปลี่ยนแปลงของฉันฉันต้องทดสอบของจริง ฉันมีสำเนาฐานข้อมูลการผลิตเพื่อให้ทำงานด้วย ในกรณีของฉันการดัมพ์และการกู้คืนระหว่างการทดสอบนั้นเร็วกว่าการเขียนสคริปต์เพื่อเลิกทำการเปลี่ยนแปลงทั้งหมด มันเร็วกว่า แต่ก็ยังทำให้ฉันช้าลงมาก (การคืนค่าใช้เวลาประมาณ 20 นาทีสำหรับแล็ปท็อปอายุของฉัน) มีวิธีใดบ้างที่ฉันสามารถบันทึกสแน็ปช็อตสถานะปัจจุบันของฐานข้อมูลแล้วคืนค่าได้อย่างรวดเร็ว ฉันรับประกันว่าจะเป็นผู้ใช้คนเดียวในระบบและฉันมีสิทธิ์เข้าถึงรูต ดัมพ์ฐานข้อมูลคือ ~ 100MB เมื่อ tar'ed และ gzip'ed เวอร์ชัน PostgreSQL คือ 8.3 ขอบคุณล่วงหน้าสำหรับความคิดที่เป็นประโยชน์

1
วิธีจัดการสิทธิ์เริ่มต้นสำหรับผู้ใช้ในฐานข้อมูลกับ SCHEMA
ฉันต้องการย้ายแอปพลิเคชั่นฐานข้อมูลที่ขับเคลื่อนด้วยฐานข้อมูลอย่างง่าย ๆ จาก SQLite3 ไปยัง PostgreSQL 9.3 และกระชับสิทธิ์ใน DB ขณะที่ฉันดำเนินการ แอปพลิเคชันในปัจจุบันประกอบด้วยคำสั่งเพื่ออัปเดตข้อมูล และหนึ่งในการค้นหา โดยปกติฉันจะต้องบำรุงรักษาฐานข้อมูลด้วยวิธีอื่น (สร้างตารางมุมมองทริกเกอร์ ฯลฯ ) ใหม่ ในขณะที่แอปพลิเคชันนี้จะเป็นโฮสต์เดียวบนเซิร์ฟเวอร์ในตอนแรกฉันต้องการอบในสมมุติฐานว่ามันอาจจะโฮสต์บนเซิร์ฟเวอร์ที่มีฐานข้อมูลอื่น ๆ ในอนาคตแทนที่จะต้องแย่งภายหลังหากจำเป็น อนาคต. ฉันคิดว่าสิ่งเหล่านี้เป็นข้อกำหนดที่พบได้ทั่วไป แต่ฉันมีปัญหาในการค้นหาบทช่วยสอนที่อธิบายวิธีตั้งค่าฐานข้อมูลใหม่ใน PostgreSQL โดยมีการแยกผู้ใช้ / สิทธิ์แบบนี้ การอ้างอิงดำเนินไปอย่างมีความยาวเกี่ยวกับกลุ่มผู้ใช้บทบาทฐานข้อมูลสกีมาและโดเมน แต่ฉันพบว่าพวกเขาสับสน นี่คือสิ่งที่ฉันได้ลองมาแล้ว (จากภายในpsqlเป็น 'postgres'): CREATE DATABASE hostdb; REVOKE ALL ON DATABASE hostdb FROM public; \connect hostdb CREATE SCHEMA hostdb; CREATE USER hostdb_admin …

3
ลบข้อกำหนดรหัสผ่านสำหรับผู้ใช้ postgres
ฉันเข้าใจว่าเมื่อติดตั้งแล้ว PostgreSQL ไม่มีรหัสผ่านสำหรับผู้ใช้รูท db (postgres): postgres=# select usename, passwd is null from pg_shadow; usename | ?column? ----------+---------- postgres | t (1 row) ... และควรตั้งด้วย: alter role postgres password '<<very-secret>>'; (แล้วอัปเดตpg_hba.confไฟล์ตาม) คำถามของฉันคือสิ่งที่เป็น SQL postgresเพื่อใช้ในการกลับไปสู่สถานการณ์ก่อนหน้านี้เมื่อรหัสผ่านไม่ถูกต้องสำหรับผู้ใช้ โดยทั่วไปฉันจะลบข้อกำหนดรหัสผ่านสำหรับบทบาทใด ๆ ได้อย่างไร ฉันไม่ได้ถามวิธีเปลี่ยนรหัสผ่าน แต่ต้องการลบข้อกำหนดรหัสผ่าน ( passwdคอลัมน์ว่างในตารางpg_shadow)

4
ฟังก์ชั่นประสิทธิภาพ
มาจากพื้นหลังของ MySQL ที่ประสิทธิภาพของขั้นตอนการจัดเก็บ(บทความเก่า)และการใช้งานเป็นที่น่าสงสัยฉันกำลังประเมิน PostgreSQL สำหรับผลิตภัณฑ์ใหม่สำหรับ บริษัท ของฉัน หนึ่งในสิ่งที่ฉันอยากทำคือย้ายบางส่วนของตรรกะแอปพลิเคชันลงในกระบวนงานที่เก็บไว้ดังนั้นฉันจึงขอ DOs และ DON'Ts (แนวทางปฏิบัติที่ดีที่สุด) เกี่ยวกับการใช้ฟังก์ชันใน PostgreSQL (9.0) โดยเฉพาะเกี่ยวกับประสิทธิภาพการทำงานผิดพลาด

2
ความแตกต่างระหว่าง now () และ current_timestamp
ใน PostgreSQL ฉันใช้now()และcurrent_timestampฟังก์ชั่นและฉันไม่เห็นความแตกต่าง: # SELECT now(), current_timestamp; now | now --------------------------------+-------------------------------- 04/20/2014 19:44:27.215557 EDT | 04/20/2014 19:44:27.215557 EDT (1 row) ฉันพลาดอะไรไปรึเปล่า?

1
วิธีการทำให้การสำรองและทดสอบ PostgreSQL DB ทำงานและเสร็จสมบูรณ์
ฉันหวังว่าฉันจะได้รับคำตอบที่ชัดเจนเกี่ยวกับวิธีการสำรองข้อมูลแบบเต็มของ Postgres เหมือนกับที่คุณใช้กับ MS SQL Server จากนั้นดูแลผู้ใช้ที่ไม่ได้ใช้งาน จากสิ่งที่ฉันได้อ่านและอาจผิดการค้นหาบล็อก PostgreSQL ที่ดีนั้นท้าทายมากดังนั้นโปรดแนะนำฉันให้ฉันฉันต้องหาวิธีที่แอพนี้ทำงานได้ดังนั้นฉันจึงสามารถไว้วางใจในการสำรองและ Slony ของฉัน การทำซ้ำ ฉันมีนักพัฒนากู้คืนการสำรองข้อมูลที่ฉันใช้จาก PgadminIII ผ่านcustom,, directoryและการจัดtarรูปแบบขณะที่เลือกOIDs แต่เขาบอกว่าสองคนไม่โหลด, tarทำ แต่มันเป็นเพียงไดเรกทอรีเท่านั้นไม่ใช่ข้อมูล ตอนนี้ฉันสับสนจริงๆ ฉันกำลังใช้ PGAdminIII มีตัวเลือกpg_dumpและ pg_dumpallฉันต้องการสำรองข้อมูลทุกอย่างที่ฉันต้องการเพื่อทดสอบคืนค่าฐานข้อมูลนี้ที่ใดที่หนึ่งและตรวจสอบว่าใช่ข้อมูลทั้งหมดที่เราต้องการและการสำรองข้อมูลของเรานั้นดี ในที่สุดฉันต้องการเขียนสคริปต์คืนค่าอัตโนมัติ แต่วันละครั้ง pg_dumpallเห็นได้ชัดว่ามี-globalsตัวเลือกที่ควรสำรองข้อมูลทุกอย่าง แต่ความช่วยเหลือในการpg_dumpallแสดง-g, --globals-only dump only global objects, no databasesไม่ใช่--globalsตัวเลือก ฉันคิดว่าpg_dumpallอย่างน้อยก็จะต้องทำการสำรองกุญแจต่างประเทศ แต่ถึงอย่างนั้นก็ดูเหมือนจะเป็น 'ตัวเลือก' ตามเอกสารประกอบแม้ว่าpg_dumpallฉันจะต้องใช้-oตัวเลือกในการสำรองคีย์ต่างประเทศฉันไม่สามารถจินตนาการได้เลยว่าเมื่อใดที่ฉันไม่ต้องการสำรองคีย์ต่างประเทศ ฉันจะดูแลผู้ใช้ที่กำพร้าและตรวจสอบว่าฉันมีทุกอย่างได้อย่างไร ฉันต้องการกู้คืนไฟล์สำรองของฉันจริงบนเซิร์ฟเวอร์อื่นและตรวจสอบทุกอย่างทำงาน หากใครมีข้อเสนอแนะเกี่ยวกับวิธีการสำรองข้อมูลจริงใน PostgreSQL และคืนค่าฉันจะขอบคุณมาก ฉันมีเซิร์ฟเวอร์ PostgreSQL แต่ฉันก็ยังไม่เข้าใจว่าทำไมแอปจะไม่ทำการสำรองข้อมูลOIDโดยค่าเริ่มต้น! ดูเหมือนว่า 99.9% …

4
ผู้ใช้ที่สร้างขึ้นสามารถเข้าถึงฐานข้อมูลทั้งหมดใน PostgreSQL โดยไม่ต้องมีการมอบสิทธิ์ใด ๆ
ฉันต้องคิดถึงบางสิ่งเกี่ยวกับการตั้งค่า PostgreSQL สิ่งที่ฉันต้องการจะทำคือสร้างฐานข้อมูลและผู้ใช้ที่แยกจากกันเพื่อให้ผู้ใช้เฉพาะสามารถเข้าถึงฐานข้อมูลที่ฉันระบุ อย่างไรก็ตามจากสิ่งที่ฉันสามารถตรวจสอบได้ผู้ใช้ที่สร้างขึ้นใด ๆ สามารถเข้าถึงฐานข้อมูลทั้งหมดโดยไม่มีการมอบสิทธิ์ใด ๆ นี่คือสิ่งที่ฉันทำบน Ubuntu Server 12.04: apt-get install postgresql sudo -u postgres createuser -DRSP mike1 (การระบุรหัสผ่านสำหรับผู้ใช้ใหม่) sudo -u postgres createdb data1 psql -h localhost -U mike1 data1 (การระบุรหัสผ่านสำหรับผู้ใช้ mike1 เพื่อล็อกอิน) ดูเหมือนว่าผู้ใช้ใหม่ "mike1" ไม่มีปัญหาในการเชื่อมต่อกับฐานข้อมูล "data1" และการสร้างตาราง ฯลฯ และสิ่งนี้โดยไม่ต้องเรียกใช้คำสั่ง GRANT เลย (และเจ้าของ "data1" คือ "postgres" เนื่องจากฉันไม่ได้ระบุ เจ้าของในขั้นตอนที่ …

4
มุมมองเป็นอันตรายต่อประสิทธิภาพใน PostgreSQL หรือไม่
ต่อไปนี้เป็นข้อความที่ตัดตอนมาจากหนังสือเกี่ยวกับการออกแบบ db (การออกแบบฐานข้อมูลเริ่มต้น ISBN: 0-7645-7490-6): อันตรายจากการใช้มุมมองคือการกรองคิวรีกับมุมมองโดยคาดว่าจะอ่านส่วนเล็ก ๆ ของตารางที่มีขนาดใหญ่มาก การกรองใด ๆ ที่ควรทำในมุมมองเพราะการกรองใด ๆ กับตัวเองถูกนำไปใช้หลังจากแบบสอบถามในมุมมองได้ดำเนินการเสร็จสมบูรณ์ โดยทั่วไปมุมมองมีประโยชน์สำหรับการเร่งกระบวนการพัฒนา แต่ในระยะยาวสามารถฆ่าประสิทธิภาพของฐานข้อมูลได้อย่างสมบูรณ์ ต่อไปนี้เป็นข้อความที่ตัดตอนมาจากเอกสารประกอบ PostgreSQL 9.5: การใช้มุมมองแบบเสรีเป็นสิ่งสำคัญในการออกแบบฐานข้อมูล SQL ที่ดี มุมมองช่วยให้คุณสามารถแค็ปซูลรายละเอียดของโครงสร้างของตารางของคุณซึ่งอาจเปลี่ยนแปลงได้เมื่อแอปพลิเคชันของคุณพัฒนาขึ้นหลังอินเทอร์เฟซที่สอดคล้องกัน แหล่งที่มาทั้งสองดูเหมือนจะขัดแย้งกัน ("ไม่ออกแบบด้วยมุมมอง" กับ "ทำออกแบบด้วยมุมมอง") อย่างไรก็ตามในมุมมอง PG จะดำเนินการโดยใช้ระบบกฎ ดังนั้นอาจเป็นไปได้ (และนี่คือคำถามของฉัน) การกรองใด ๆ กับมุมมองจะถูกเขียนใหม่เป็นตัวกรองภายในมุมมองทำให้เกิดการเรียกใช้แบบสอบถามแบบครั้งเดียวเทียบกับตารางต้นแบบ การตีความของฉันถูกต้องหรือไม่และ PG ได้รวมเอาส่วนคำสั่งเข้าและออกจากที่ไหน? หรือมันแยกกันทีละอัน? ตัวอย่างสั้น ๆ ที่มีอยู่ในตัวถูกต้อง (คอมไพล์ได้)?

3
จะยกเลิกการเชื่อมต่อทั้งหมดไปยังฐานข้อมูลเฉพาะโดยไม่หยุดเซิร์ฟเวอร์ได้อย่างไร
ฉันต้องการยกเลิกการเชื่อมต่อทั้งหมด (เซสชัน) ที่เปิดอยู่ในขณะนี้ไปยังฐานข้อมูล PostgreSQL เฉพาะ แต่ไม่ต้องรีสตาร์ทเซิร์ฟเวอร์หรือยกเลิกการเชื่อมต่อกับฐานข้อมูลอื่น ฉันจะทำสิ่งนั้นได้อย่างไร

1
ข้อ จำกัด การปรับขนาดของ PostgreSQL และ MySQL
ฉันได้ยินมาว่าประสิทธิภาพของฐานข้อมูลเชิงสัมพันธ์ที่ไม่มีส่วนแบ่งเช่น MySQL หรือ PostgreSQL "แตก" เกินกว่า 10 TB ฉันสงสัยว่าข้อ จำกัด ดังกล่าวมีอยู่เนื่องจากไม่มีใครมากับ Netezza, Greenplum หรือ Vertica ฯลฯ อย่างไรก็ตามฉันอยากจะถามว่าใครที่นี่มีการอ้างอิงถึงรายงานการวิจัยหรือกรณีศึกษาอย่างเป็นทางการที่มีการ จำกัด ปริมาณเหล่านี้หรือไม่

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