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

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

1
ไม่สามารถเชื่อมต่อกับฐานข้อมูล postgresql ระยะไกล
ฉันพยายามเชื่อมต่อกับฐานข้อมูล psql ระยะไกล ก่อนที่ฉันจะเพิ่มรายการ pg_hba.conf ด้วยที่อยู่ IP ของลูกค้าฉันได้รับข้อความแสดงข้อผิดพลาด: xdev@xdevbox:~$ psql -U postgres testdb -h 10.1.1.47 psql: FATAL: no pg_hba.conf entry for host "10.201.50.71", user "postgres", database "testdb", SSL off ฉันเพิ่ม IP ของลูกค้าด้วยการตั้งค่าความน่าเชื่อถือ ฉันเปลี่ยนที่อยู่ฟังใน postgres.conf บนเซิร์ฟเวอร์เพื่อฟัง "*" จากนั้นฉันรีสตาร์ทเซิร์ฟเวอร์ฐานข้อมูลโดยใช้คำสั่ง /etc/init.d/postgresql restart ตอนนี้เมื่อฉันพยายามเชื่อมต่อฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้: psql: could not connect to server: Connection refused Is the …

1
การดัดแปลงเป็น GEQO (การเพิ่มประสิทธิภาพการสืบค้นเชิงพันธุกรรม) ของ PostgreSQL
ฉันต้องการใช้งานฟังก์ชั่นที่สอดคล้องกับฟังก์ชัน GEQO ของ PostgreSQL ฉันเข้าใจว่าวิธีการของ GEQO คือการเข้ารหัสแผนแบบสอบถามเป็นสตริงจำนวนเต็มและ GEQO สร้างลำดับการเข้าร่วมที่เป็นไปได้เหล่านี้โดยการสุ่ม ที่มา: http://www.postgresql.org/docs/9.3/static/geqo-pg-intro.html คำถามของฉัน: จะแก้ไขฟังก์ชั่น GEQO ได้อย่างไรหากฉันทราบลำดับการรวมที่ถูกต้องอย่างชัดเจนเพื่อที่ฉันจะได้ไม่ต้องค้นหาลำดับการรวมที่แตกต่างกัน ตัวอย่างเช่นหากฉันรู้ว่าวิธีที่ดีที่สุดในการเข้าร่วม 4 ความสัมพันธ์คือ 4-1-3-2 ฉันไม่จำเป็นต้องตรวจสอบการเปลี่ยนลำดับอื่น ๆ ไม่มีข้อมูลที่ดีเกี่ยวกับการใช้ GEQO ใน PostgreSQL PostgreSQL ให้มุมมองโดยรวมของฟังก์ชัน GEQO เท่านั้น แต่ไม่ได้อธิบายอะไรมาก หรือฉันสามารถใช้ฟังก์ชันนี้ใน standard_join_search () ตัวเองโดยไม่ใช้ GEQO ได้หรือไม่

1
ฉันจะแยก ctid ลงในหมายเลขหน้าและแถวได้อย่างไร
แต่ละแถวในตารางมีคอลัมน์ระบบ ctidประเภทtidที่แสดงถึงตำแหน่งทางกายภาพของแถว: create table t(id serial); insert into t default values; insert into t default values; select ctid , id from t; ctid | รหัส : ---- | -: (0,1) | 1 (0,2) | 2 dbfiddle ที่นี่ อะไรคือวิธีที่ดีที่สุดในการได้รับเพียงจำนวนหน้าเป็นจากctidในประเภทที่เหมาะสมที่สุด (เช่นinteger, bigintหรือnumeric(1000,0))? วิธีเดียวที่ฉันสามารถคิดเป็นน่าเกลียดมาก

3
วิธีใช้สิทธิ์ตรรกะทางธุรกิจใน PostgreSQL (หรือ SQL โดยทั่วไป)
สมมติว่าฉันมีสารบัญ CREATE TABLE items ( item serial PRIMARY KEY, ... ); ตอนนี้ฉันต้องการแนะนำแนวคิดของ "การอนุญาต" สำหรับแต่ละรายการ (โปรดทราบว่าฉันไม่ได้พูดถึงสิทธิ์การเข้าถึงฐานข้อมูลที่นี่ แต่สิทธิ์ทางตรรกะทางธุรกิจสำหรับรายการนั้น) แต่ละรายการมีสิทธิ์เริ่มต้นและสิทธิ์ต่อผู้ใช้ที่อาจแทนที่สิทธิ์เริ่มต้น ฉันพยายามคิดหลายวิธีในการใช้งานและหาวิธีแก้ไขปัญหาต่อไปนี้ แต่ฉันไม่แน่ใจว่าวิธีใดดีที่สุดและเพราะเหตุใด: 1) โซลูชันบูลีน ใช้คอลัมน์บูลีนสำหรับการอนุญาตแต่ละครั้ง: CREATE TABLE items ( item serial PRIMARY KEY, can_change_description boolean NOT NULL, can_change_price boolean NOT NULL, can_delete_item_from_store boolean NOT NULL, ... ); CREATE TABLE item_per_user_permissions ( item int …
16 postgresql  enum 

6
ค้นหาหมายเลขฟรี“ n” ติดต่อกันจากตาราง
ฉันมีตารางที่มีตัวเลขเช่นนี้ (สถานะเป็นได้ทั้งฟรีหรือถูกมอบหมาย) สถานะหมายเลข id_set ----------------------- 1 000001 ที่มอบหมาย 1 000002 ฟรี 1 000003 มอบหมาย 1 000004 ฟรี 1 000005 ฟรี 1 000006 มอบหมาย 1 000007 มอบหมาย 1 000008 ฟรี 1 000009 ฟรี 1 000010 ฟรี 1 000011 ได้รับมอบหมาย 1 000012 ได้รับมอบหมาย 1 000013 ได้รับมอบหมาย 1 000014 ฟรี 1 000015 ได้รับมอบหมาย …

1
การผลิตการจำลองแบบ PostgreSQL พร้อมหรือยัง
การจำลองแบบดั้งเดิมของ PostgreSQL เปรียบเทียบกับ MySQL อย่างไร ฉันรู้ว่าการจำลองแบบอะซิงโครนัสได้รับการสนับสนุนมานานกว่าการซิงค์ซึ่งเร็ว ๆ นี้ ซิงโครนัสน่าเชื่อถือที่จะใช้ในโครงการจริงหรือไม่?

2
การแคชดัชนี PostgreSQL
ฉันมีปัญหาในการค้นหาคำอธิบาย 'lay' ของวิธีการจัดทำดัชนีแคชใน PostgreSQL ดังนั้นฉันต้องการตรวจสอบความเป็นจริงของสมมติฐานเหล่านี้ทั้งหมดหรือทั้งหมด: ดัชนี PostgreSQL เช่นแถวอยู่บนดิสก์ แต่อาจถูกแคช ดัชนีอาจอยู่ในแคชทั้งหมดหรือไม่ทั้งหมด ไม่ว่าจะเป็นแคชหรือไม่ขึ้นอยู่กับความถี่ในการใช้งาน (ตามที่กำหนดโดยตัววางแผนคิวรี) ด้วยเหตุนี้ดัชนี 'สมเหตุสมผล' ส่วนใหญ่จึงจะอยู่ในแคชตลอดเวลา ดัชนีอยู่ในแคชเดียวกัน ( buffer cache?) เป็นแถวดังนั้นพื้นที่แคชที่ใช้โดยดัชนีจะไม่สามารถใช้ได้กับแถว แรงจูงใจของฉันสำหรับการทำความเข้าใจนี้ตามมาจากคำถามอื่นที่ฉันถามว่ามีข้อเสนอแนะว่าสามารถใช้ดัชนีบางส่วนในตารางซึ่งข้อมูลส่วนใหญ่จะไม่สามารถเข้าถึงได้ ก่อนดำเนินการนี้ฉันต้องการให้ชัดเจนว่าการใช้ดัชนีบางส่วนทำให้ได้เปรียบสองประการ: เราลดขนาดของดัชนีในแคชเพิ่มพื้นที่ว่างสำหรับแถวในแคช เราลดขนาดของ B-Tree ส่งผลให้เกิดการตอบแบบสอบถามที่รวดเร็วขึ้น

4
PostgreSQL 9.1 Hot Backup Error: ระบบฐานข้อมูลเริ่มต้นขึ้น
ฉันได้ทำงานกับการสำรองข้อมูลที่ร้อนแรงสำหรับ Postgres 9.1 มานานแล้วและพบปัญหาที่สอดคล้องกัน หลังจากรีสตาร์ท Postgres บนเซิร์ฟเวอร์ทาสไฟล์บันทึก pgstartup และไฟล์บันทึกประจำวันภายใต้ไดเร็กทอรี pg_log จะอ่านโดยไม่มีข้อผิดพลาด อย่างไรก็ตามเมื่อฉันพยายามเข้าสู่ฐานข้อมูลโดยใช้คำสั่ง psql ฉันได้รับข้อผิดพลาด: FATAL: ระบบฐานข้อมูลเริ่มต้นขึ้นแล้ว ไฟล์ recovery.conf จะไม่หันไปใช้ recovery.done ฉันค้นคว้าข้อผิดพลาดนี้อย่างครอบคลุมและพบคำตอบเดียวกัน: ฐานข้อมูลยังไม่ได้ปิดอย่างสมบูรณ์ก่อนที่ฉันจะพยายามเริ่ม Postgres ใหม่ วิธีเดียวที่ฉันรีสตาร์ท Postgres คือผ่านservice postgresql-9.1 restartหรือ/etc/init.d/postgresql-9.1 restartคำสั่ง หลังจากฉันได้รับข้อผิดพลาดนี้ฉันจะฆ่ากระบวนการทั้งหมดและลองรีสตาร์ทฐานข้อมูลอีกครั้งและยังคงได้รับข้อผิดพลาดเดิมอีกครั้ง ฉันกำลังสูญเสียที่จะไปจากที่นี่และวิธีการแก้ไขปัญหานี้ ด้านล่างเป็นกระบวนการที่แน่นอนที่ฉันได้ทำเพื่อให้การสำรองข้อมูลเสร็จสมบูรณ์ การกำหนดค่าเซิร์ฟเวอร์หลัก: pg_hba.conf เพิ่มบรรทัด: การจำลองแบบโฮสต์ postgres เชื่อถือ IPAddressOfSlaveServer postgresql.conf: wal_level = hot_standby max_wal_senders = 5 Listen_address = '*' …
16 postgresql 

2
ดัชนีในคีย์หลักไม่ได้ใช้ในการเข้าร่วมง่าย
ฉันมีคำนิยามตารางและดัชนีต่อไปนี้: CREATE TABLE munkalap ( munkalap_id serial PRIMARY KEY, ... ); CREATE TABLE munkalap_lepes ( munkalap_lepes_id serial PRIMARY KEY, munkalap_id integer REFERENCES munkalap (munkalap_id), ... ); CREATE INDEX idx_munkalap_lepes_munkalap_id ON munkalap_lepes (munkalap_id); ทำไมไม่มีดัชนีใน munkalap_id ที่ใช้ในการสืบค้นต่อไปนี้? EXPLAIN ANALYZE SELECT ml.* FROM munkalap m JOIN munkalap_lepes ml USING (munkalap_id); QUERY PLAN Hash …

3
PostgreSQL 9.1 Streaming Replication ไม่ล่าช้าโดยไม่มีการเก็บถาวร WAL หรือไม่
บริบท: สมมติว่าขณะใช้ Streaming Replication / Hot Standby บนคลัสเตอร์ Postgres 9.1 โหนดสแตนด์บายจะหยุดทำงาน มันค้างอยู่หนึ่งวันในช่วงเวลานั้น DML จำนวนมากจะเกิดขึ้นกับต้นแบบ recovery.conf ของสแตนด์บายไม่มีรายการ 'restore_command' (สำหรับการกู้คืนจากไฟล์เจอร์นัล WAL) แต่ไม่มีสตริง 'primary_conninfo' (สำหรับการสตรีมมิ่งการจำลองแบบ) คำถาม: ถ้าฉันเริ่มต้นสแตนด์บายอีกครั้งหลังจากวันของการเปลี่ยนแปลงต้นแบบ มันจะ "ทัน" (ในที่สุดจะเข้าสู่สถานะที่สะท้อนต้นแบบ) โดยใช้การจำลองแบบการสตรีมเท่านั้นหรือไม่ หรือฉันต้องเปิดใช้งานการเก็บถาวรไฟล์ WAL และปล่อยให้มันใช้ไฟล์ที่เก็บถาวรในช่วงที่ไฟดับเพื่อให้แน่ใจว่าสกุลเงิน? ฉันได้ตรวจสอบเอกสารการจำลองแบบ WAL การเก็บถาวร / การสตรีมมิงที่นี่แล้วและมันบอกว่าคุณไม่ต้องเปิดใช้งานทั้งการเก็บถาวร WAL และการจำลองแบบสตรีมมิ่ง แต่ก็ไม่มีความชัดเจนว่าจะเกิดขึ้นหรือไม่ ขอบคุณ!

1
สถานะการออก PostgreSQL เมื่อเรียกใช้ไฟล์
เมื่อเรียกใช้ PostgreSQL ด้วยรหัสข้อผิดพลาดคำสั่ง SQL เดียวจะถูกส่งคืนตามที่คาดไว้: % psql -c "SELECT * FROM AWDASDASDASDAS" my_db ERROR: relation "awdasdasdasdas" does not exist LINE 1: SELECT * FROM AWDASDASDASDAS % echo $? 1 แต่เมื่อเรียกใช้ไฟล์ข้อผิดพลาดจะถูกระงับ: % psql -f test.sql my_db psql:test.sql:1: ERROR: relation "awdasdasdasdas" does not exist LINE 1: SELECT * FROM AWDASDASDASDAS % echo …
16 postgresql 

4
PostgreSQL: คอลัมน์ที่สร้าง
PostgreSQL สนับสนุนคอลัมน์ที่สร้างขึ้นหรือไม่ ก็รู้ว่าเป็นคอลัมน์เสมือน ฉันกำลังไม่ได้พูดคุยเกี่ยวกับคอลัมน์IDENTITY ฉันไม่สามารถหาข้อมูลเกี่ยวกับคุณสมบัติที่น่าทึ่งนี้ได้ แต่ฉันรู้ว่ามันมีอยู่ใน SQL Server และใน MariaDB & MySQL เวอร์ชันล่าสุด คุณลักษณะดังกล่าวได้รับการกล่าวถึงในมาตรฐานSQL: 2003และมีการพูดคุยกันในฟอรัม PostgreSQL ประมาณปี 2549 แต่ฉันไม่พบสิ่งใดในเนื้อหา มีการอภิปรายเกี่ยวกับ SO แต่ตอนนี้ค่อนข้างเก่าแล้วดังนั้นจึงอาจล้าสมัย

1
ทำความเข้าใจกับค่าเริ่มต้นของพารามิเตอร์“ max_wal_size” และ“ min_wal_size” จากไฟล์ postgresql.conf
ค่าเริ่มต้นคือตามเอกสารประกอบสำหรับmin_wal_sizeและmax_wal_sizeพารามิเตอร์ : สำหรับmax_wal_size: The default is 1 GB สำหรับmin_wal_size:The default is 80 MB จากนั้นฉันดูพารามิเตอร์นี้จากการกำหนดค่าฐานข้อมูลของฉัน: select name, setting, unit from pg_settings where name in ('min_wal_size', 'max_wal_size') ให้ผลลัพธ์: name | setting | unit ---------------------------------- max_wal_size | 64 | min_wal_size | 5 | ฉันมีคำถาม 2 ข้อ: 1) เหตุใดค่าเหล่านี้จึงไม่ตรงกับค่าเริ่มต้นซึ่งแสดงในเอกสาร ฉันไม่เคยเปลี่ยนการตั้งค่าคอนฟิกเลย 2) ทำไมunitคอลัมน์ว่างเปล่า / NULL …

2
วิธีเพิ่มความเร็วในการเลือกที่แตกต่างกันอย่างไร
ฉันมีตัวเลือกแบบง่าย ๆ ในข้อมูลอนุกรมเวลา: SELECT DISTINCT user_id FROM events WHERE project_id = 6 AND time > '2015-01-11 8:00:00' AND time < '2015-02-10 8:00:00'; และใช้เวลา 112 วินาที นี่คือแผนแบบสอบถาม: http://explain.depesz.com/s/NTyA แอปพลิเคชันของฉันต้อง preform การดำเนินการที่แตกต่างกันมากมายและนับเช่นนี้ มีวิธีที่เร็วกว่าในการรับข้อมูลประเภทนี้หรือไม่

1
การกู้คืนฐานข้อมูล Postgres: pg_restore -vs- เพียงแค่ใช้ psql
ฉันกำลังทิ้งฐานข้อมูล Postgres ของฉันโดยใช้pg_dump (ในรูปแบบข้อความล้วน) แล้วกู้คืนได้อย่างง่ายดายโดยใช้psql (พร้อม-fตัวเลือก) คำถามใดที่ฉันถามว่า: ฉันหายไปโดยไม่ใช้pg_restoreซึ่งดูเหมือนว่าเป็นเครื่องมือกู้คืนแบบพิเศษ (เทียบกับทั่วไปpsql)? ฉันสามารถควบคุมตัวเลือกต่าง ๆ เช่นการปิดใช้งานทริกเกอร์และเช่นนั้นโดยใช้pg_dumpพารามิเตอร์ ถ้าเช่นนั้นจะpg_restoreใช้ทำอะไร รูปแบบการถ่ายโอนข้อมูลที่ไม่ใช่ข้อความธรรมดา?

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