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

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

2
PostgreSQL: เวลาเข้าถึงตารางล่าสุด
ฉันรับผิดชอบฐานข้อมูลขนาดใหญ่ของ PostgreSQL โดยมีตารางไม่กี่โหล ฉันสงสัยว่าตารางเหล่านี้จำนวนมากจะไม่สามารถเข้าถึงได้ วิธีที่ดีที่สุดในการตรวจสอบเมื่อครั้งล่าสุดคือการเข้าถึงตารางบางอย่าง ผมคิดว่าการเพิ่มทริกเกอร์บนDELETE, INSERTและUPDATEแต่ผมหวังว่าจะมีวิธีที่มีประสิทธิภาพมากขึ้น
10 postgresql 

5
ตรวจสอบว่าฐานข้อมูล PostgreSQL มีการเปลี่ยนแปลงล่าสุด
ฉันกำลังดูการเปลี่ยนแปลงวิธีการสำรองข้อมูลและสงสัยว่ามีวิธีการตรวจสอบว่าฐานข้อมูลใดในคลัสเตอร์ postgreql ที่ยังไม่ได้เปลี่ยนไปเมื่อเร็ว ๆ นี้ แทนที่จะใช้ pg_dumpall ฉันต้องการใช้ pg_dump และถ่ายโอนข้อมูลเฉพาะฐานข้อมูลที่มีการเปลี่ยนแปลงนับตั้งแต่การสำรองข้อมูลครั้งล่าสุด (บางฐานข้อมูลไม่ได้รับการอัปเดตบ่อยมาก) - แนวคิดว่าถ้าไม่มีการเปลี่ยนแปลงใด ๆ การสำรองข้อมูลปัจจุบันควร ยังดีอยู่ ไม่มีใครทราบวิธีการตรวจสอบเมื่อมีการปรับปรุง / เปลี่ยนแปลงฐานข้อมูลเฉพาะล่าสุด? ขอบคุณ ... ปรับปรุง: ฉันหวังว่าจะไม่ต้องเขียนทริกเกอร์ให้ทั่วเพราะฉันไม่สามารถควบคุมการสร้างฐานข้อมูลในคลัสเตอร์ใดคลัสเตอร์หนึ่ง (ให้สร้างวัตถุ db ภายในฐานข้อมูล) ขุดเพิ่มเติมดูเหมือนว่ามีความสัมพันธ์ระหว่างเนื้อหาของไฟล์ $ PGDATA / global / pg_database (โดยเฉพาะฟิลด์ที่สอง) และชื่อไดเรกทอรีภายใต้ $ PGDATA / ฐาน ออกไปบนกิ่งฉันเดาว่าฟิลด์ที่สองของไฟล์ pg_database เป็นฐานข้อมูล oid และแต่ละฐานข้อมูลมีไดเรกทอรีย่อยของตนเองภายใต้ $ PGDATA / ฐาน (มี oid …

2
วิธีแทรกที่อยู่ IP ลงในคอลัมน์ inet ใน PostgreSQL ได้อย่างไร
ผมอยากจะแทรกอยู่ IP inetลงในคอลัมน์ที่มีประเภท ฉันสามารถแทรกข้อมูลในรูปแบบใดได้บ้าง มันเป็นไบนารีเท่านั้นหรือมีวิธีใดที่ฉันสามารถแทรกจากข้อความเช่น"192.168.1.082"? มีฟังก์ชั่นช่วยเหลือสำหรับสิ่งนี้เพื่อให้ฉันสามารถทดสอบได้จากpsqlในพร้อมท์คำสั่งหรือไม่

1
อะไรคือความแตกต่างระหว่างการจำลองแบบ PostgreSQL 9.0 และ Slony-I
ยังมีประโยชน์ใด ๆ สำหรับ Slony-I และถ้าเป็นเช่นนั้นมันคืออะไร? สำหรับการชี้แจงจาก 9.0 Postgresql รองรับการจำลองแบบสตรีมมิ่งในตัว

1
ทำไมฉันต้องส่ง NULL ไปเป็นประเภทคอลัมน์
ฉันมีผู้ช่วยที่กำลังสร้างรหัสเพื่อทำการอัปเดตจำนวนมากสำหรับฉันและสร้าง SQL ที่มีลักษณะดังนี้: (ทั้งประเภทที่ใช้งานอยู่และเขตข้อมูลหลักเป็นประเภทboolean) UPDATE fields as t set "active" = new_values."active","core" = new_values."core" FROM (values (true,NULL,3419), (false,NULL,3420) ) as new_values("active","core","id") WHERE new_values.id = t.id; อย่างไรก็ตามมันล้มเหลวด้วย: ERROR: column "core" is of type boolean but expression is of type text ฉันสามารถทำให้มันทำงานได้โดยเพิ่ม::booleanโมฆะ แต่มันดูแปลกทำไม NULL ถึงถูกพิจารณาว่าเป็นประเภทTEXTใด นอกจากนี้ยังเป็นการยากที่จะร่ายเพราะมันต้องการการทำใหม่ของโค้ดเพื่อให้รู้ว่าควรใช้ NULL แบบใด (รายการของคอลัมน์และค่าปัจจุบันถูกสร้างอัตโนมัติจากอาร์เรย์ของวัตถุ JSON แบบง่าย ๆ …
10 postgresql  null  cast 

5
ทางเลือกในการเข้าร่วมด้วยตนเอง
ฉันได้ถามคำถามที่นี่: /programming/43807566/how-to-divide-two-values-from-the-same-column-but-at-different-rows เกี่ยวกับการหารค่าจากตารางเดียวกันที่คอลัมน์เดียวกัน แต่อยู่ในแถวที่ต่างกัน ตอนนี้ฉันมีปัญหาที่ฉันมีตัวเศษและตัวส่วนมากกว่า (ต่างกันuns) ยังคงself joinเป็นวิธีที่ดีในการแก้ปัญหานี้กับ Postgres หรือมีวิธีแก้ปัญหาที่ดีกว่า ตัวอย่าง: | postcode | value | uns | |----------|-------|-----| | AA | 40 | 53 | | BB | 20 | 53 | | AA | 10 | 54 | | AA | 20 | 55 | | AA | …

2
ทำไมคีย์ต่างประเทศแบบคอมโพสิตจึงจำเป็นต้องมีข้อ จำกัด ที่ไม่เหมือนกัน?
นี่คือตารางอย่างง่าย ๆ ที่เรคคอร์ดอาจอ้างอิงเรคคอร์ดหลักในตารางเดียวกัน: CREATE TABLE foo ( id SERIAL PRIMARY KEY, parent_id INT NULL, num INT NOT NULL, txt TEXT NULL, FOREIGN KEY (parent_id) REFERENCES foo(id) ); ด้วยข้อกำหนดเพิ่มเติมที่หนึ่งในค่าเขตข้อมูลอื่น ( num) จะต้องเหมือนกันระหว่างบันทึกผู้ปกครองและเด็กฉันคิดว่าคีย์ต่างประเทศประกอบควรทำเคล็ดลับ ฉันเปลี่ยนบรรทัดสุดท้ายเป็น FOREIGN KEY (parent_id, num) REFERENCES foo(id, num) และมีข้อผิดพลาด: ไม่มีข้อ จำกัด ที่ไม่ซ้ำกันการจับคู่ปุ่มรับสำหรับตารางการอ้างอิง "foo" ฉันสามารถเพิ่มข้อ จำกัด นี้ได้อย่างง่ายดาย แต่ฉันไม่เข้าใจว่าทำไมจึงมีความจำเป็นเมื่อหนึ่งในคอลัมน์ที่อ้างอิง ( id) …

1
pgAdmin ช้ามากในการดำเนินการทางไกล
ฉันเรียกใช้แบบสอบถามนี้จาก pgAdmin ท้องถิ่นของฉันเชื่อมต่อจากระยะไกลไปยังเซิร์ฟเวอร์ dev ของเรา: select * from users order by random() limit 1; แฮงค์เป็นเวลา17วินาทีและแสดงให้เห็น Total query runtime: 148 ms. 1 row retrieved. มันยังค้างอยู่บนการดำเนินการใด ๆ แม้แต่คลิกขวาบนโต๊ะ Afterwise ฉันเชื่อมต่อผ่าน RDP และเรียกใช้แบบสอบถามเดียวกันมีในรุ่น pgAdmin query time: 32 msเดียวกันซึ่งแสดงผลทันทีด้วย จากนั้นฉันเรียกใช้แบบสอบถามจาก pgAdmin ท้องถิ่นของฉันอีกครั้ง: Total query runtime: 337 ms. 1 row retrieved. ฉันมี ping 130 ms …

2
การรวมกันอย่างมีประสิทธิภาพ (ลบรายการที่ซ้ำกัน) ของอาร์เรย์
ฉันมีสองตารางและleft2 right2ตารางทั้งสองจะมีขนาดใหญ่ (แถว 1-10M) CREATE TABLE left2(id INTEGER, t1 INTEGER, d INTEGER); ALTER TABLE left2 ADD PRIMARY KEY (id,t1); CREATE TABLE right2( t1 INTEGER, d INTEGER, arr INTEGER[] ); ALTER TABLE right2 ADD PRIMARY KEY(t1,d); ฉันจะทำการค้นหาประเภทนี้: SELECT l.d + r.d, UNIQ(SORT((array_agg_mult(r.arr))) FROM left2 l, right2 r WHERE l.t1 = r.t1 …

2
psql: SELECT * …ยกเว้นหนึ่งคอลัมน์
ฉันค้นหาวิธีง่ายๆในการเลือกคอลัมน์ทั้งหมดยกเว้นคอลัมน์หนึ่งใน psql ด้วยความpsqlที่ผมหมายถึงบรรทัดคำสั่งแบบโต้ตอบ ฉันจะมีความสุขกับเครื่องมือที่ขยายไป*ยังรายการชื่อคอลัมน์ที่ยกมา จากนั้นฉันสามารถลบคอลัมน์เพื่อลบด้วยมือ คำถามของฉันเกี่ยวกับการใช้งานแบบโต้ตอบของ psql มันไม่ได้เป็นคำถามซ้ำ ๆ ของคนที่ไม่พอใจมาตรฐานของ sql และผู้ที่ต้องการดำเนินการบางอย่างเช่น "select * -foo"
10 postgresql  psql 

3
แบบสอบถาม PostgreSQL ช้ามากเมื่อเพิ่มแบบสอบถามย่อย
ฉันมีแบบสอบถามที่ค่อนข้างง่ายในตารางที่มีแถว 1.5M: SELECT mtid FROM publication WHERE mtid IN (9762715) OR last_modifier=21321 LIMIT 5000; EXPLAIN ANALYZE เอาท์พุท: Limit (cost=8.84..12.86 rows=1 width=8) (actual time=0.985..0.986 rows=1 loops=1) -> Bitmap Heap Scan on publication (cost=8.84..12.86 rows=1 width=8) (actual time=0.984..0.985 rows=1 loops=1) Recheck Cond: ((mtid = 9762715) OR (last_modifier = 21321)) -> BitmapOr (cost=8.84..8.84 …

1
ทำไม postgresql pg_dump ส่งออกมุมมองเป็นตาราง
ฉันใช้pg_dumpเครื่องมือPostgreSQL 9.3 สำหรับการแยกนิยามสคีมาสาธารณะโดยใช้: pg_dump -s -n public -h host -U postgres --dbname=db > ./schema.sql แต่เมื่อฉันตรวจสอบschema.sqlหนึ่งในมุมมองของเราปรากฏในCREATE TABLEคำสั่งแทนCREATE VIEWคำสั่ง แต่ถ้าฉันpg_dumpใช้มุมมองเฉพาะ: pg_dump -s -t myview -h host -U postgres --dbname=db > ./schema.sql จากนั้นschema.sqlมีคำจำกัดความมุมมองที่แท้จริง แล้วทำไมสิ่งนี้ถึงเกิดขึ้น ขอบคุณทุกคน!

1
ให้สิทธิ์น้อยที่สุดสำหรับการเข้าถึงตารางเดี่ยวแบบอ่านอย่างเดียวบน PostgreSQL
ต่อไปนี้เป็นรายการของคำสั่งที่ดูเหมือนว่าจะทำงานเพื่อสร้างผู้ใช้ใหม่ (เข้าสู่ระบบ) และให้สิทธิ์การเข้าถึงแบบอ่านอย่างเดียวสำหรับหนึ่งตารางที่ระบุบน PostgreSQL สมมติว่าคำสั่งเหล่านี้จะถูกดำเนินการในการเข้าสู่ระบบด้วยสิทธิ์ที่เพียงพอ (เช่นการpostgresเข้าสู่ระบบในการติดตั้งเริ่มต้น) CREATE ROLE user_name NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT LOGIN PASSWORD 'pwd' VALID UNTIL 'infinity'; ตอนนี้ฉันต้องการอนุญาตselectบนโต๊ะtab_abcในฐานข้อมูลdb_xyzดังนั้นที่นี่มันไป (ฐานข้อมูลdb_xyzถูกเลือกเป็นปัจจุบันผ่าน PgAdmin หรืออะไรทำนองนั้น): grant select on tab_abc to user_name; คำถามคือ: นี่คือเพียงพอหรือควรจะมีเงินทุนมากขึ้น (ฐานข้อมูลconnect, usageอาจจะ)? คำสั่งเหล่านี้ดูเหมือนจะใช้งานได้สำหรับฉัน แต่การติดตั้งเริ่มต้นของฉันมีการตั้งค่าความปลอดภัยเริ่มต้น ฉันควรเพิ่มอะไรเพิ่มเติมหากผู้ดูแลระบบเซิร์ฟเวอร์กำหนดค่าความปลอดภัยที่สูงขึ้น มันดูเหมือนว่าฉันไม่ต้องการที่จะให้connectหรือusage- จะ implicite ว่าในขณะที่การอนุญาตให้select? เป็นเช่นนั้นเสมอหรือไม่

1
วิธีใช้ดัชนีเพื่อเพิ่มความเร็วในการเรียงลำดับใน postgres
ฉันใช้ postgres 9.4 The messagesมีสคีมาดังต่อไปนี้: ข้อความเป็นของ feed_id และโพสต์ _at และข้อความสามารถมีข้อความหลัก (ในกรณีที่ตอบกลับ) Table "public.messages" Column | Type | Modifiers ------------------------------+-----------------------------+----------- message_id | character varying(255) | not null feed_id | integer | parent_id | character varying(255) | posted_at | timestamp without time zone | share_count | integer | Indexes: "messages_pkey" PRIMARY KEY, …

1
จะปิดการใช้งานคีย์ต่างประเทศชั่วคราวใน Amazon RDS PostgreSQL ได้อย่างไร
ฉันกำลังย้ายสภาพแวดล้อมการทดสอบที่มีอยู่ไปที่ Amazon RDS PostgreSQL เฟรมเวิร์กการทดสอบมีคุณลักษณะของการโหลดข้อมูลในบางตารางเป็นสถานะก่อนหน้า สำหรับสิ่งนี้จะปิดใช้งานคีย์ต่างประเทศลบข้อมูลที่มีอยู่โหลดบันทึกสถานะและเปิดใช้งานคีย์ต่างประเทศอีกครั้ง ปัจจุบันกรอบการทดสอบปิดการใช้งานคีย์ต่างประเทศโดยการปิดการใช้งานทริกเกอร์ทั้งหมด (แน่นอนต้องใช้ superuser): alter table tablename disable trigger all; ใน RDS สิ่งนี้ล้มเหลวด้วย: ข้อผิดพลาด: สิทธิ์ที่ถูกปฏิเสธ: "RI_ConstraintTrigger_a_20164" เป็นตัวกระตุ้นระบบ ฉันจะปิดใช้งานคีย์ต่างประเทศชั่วคราวใน Amazon RDS PostgreSQL ได้อย่างไร หมายเหตุ: คำถามที่คล้ายกันได้ถูกถามแล้ว ( PostgreSQL บน RDS: วิธีการนำเข้าข้อมูลจำนวนมากด้วยข้อ จำกัด FK? ) แต่เป็นเฉพาะเกี่ยวกับการนำเข้าแบบออฟไลน์และการแก้ปัญหาเฉพาะสำหรับการนำเข้าแบบออฟไลน์ด้วย

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