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

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

2
"ตารางการเปลี่ยนแปลง" ใน Postgres คืออะไร
หน้าอธิบายว่ามีอะไรใหม่ใน Postgres 10กล่าวถึง "ตารางการเปลี่ยนผ่านสำหรับทริกเกอร์" ตารางการเปลี่ยนแปลงสำหรับทริกเกอร์ คุณลักษณะนี้ทำให้AFTER STATEMENTทั้งสองเป็นประโยชน์และมีประสิทธิภาพโดยการเปิดเผยแถวที่เก่าและใหม่ในแบบสอบถาม ก่อนที่คุณสมบัตินี้AFTER STATEMENTทริกเกอร์จะไม่สามารถเข้าถึงสิ่งเหล่านี้ได้โดยตรงและการแก้ไขปัญหาคือไบแซนไทน์และมีประสิทธิภาพต่ำ สามารถเขียนลอจิกลอจิกจำนวนมากได้AFTER STATEMENTโดยหลีกเลี่ยงความจำเป็นในการสลับบริบทที่มีราคาแพงในแต่ละแถวที่จำเป็นสำหรับทริกเกอร์แต่ละแถว ตารางการเปลี่ยนแปลงคืออะไร?

3
แบบสอบถาม JOIN ที่เรียบง่ายช้ามาก
โครงสร้าง DB แบบง่าย (สำหรับฟอรัมออนไลน์): CREATE TABLE users ( id integer NOT NULL PRIMARY KEY, username text ); CREATE INDEX ON users (username); CREATE TABLE posts ( id integer NOT NULL PRIMARY KEY, thread_id integer NOT NULL REFERENCES threads (id), user_id integer NOT NULL REFERENCES users (id), date timestamp without time …

2
[FROM x, y] หมายถึงอะไรใน Postgres
ฉันเพิ่งเริ่มต้นกับ Postgres อ่านเอกสารนี้ฉันเจอแบบสอบถามนี้: SELECT title, ts_rank_cd(textsearch, query) AS rank FROM apod, to_tsquery('neutrino|(dark & matter)') query WHERE query @@ textsearch ORDER BY rank DESC LIMIT 10; ฉันสามารถเข้าใจทุกอย่างในแบบสอบถามนี้ยกเว้นFROM apod, ...สำหรับการนี้: สิ่งนี้,หมายความว่าอย่างไร ฉันเคยเข้าร่วม แต่ไม่ได้มีหลายFROMงบคั่นด้วยเครื่องหมายจุลภาค ฉันค้นหาสุทธิโดยไม่มีประโยชน์ หลังจากดูและคิดแล้วฉันคิดว่ามันประกาศตัวแปรที่เรียกว่าแบบสอบถามเพื่อให้สามารถใช้งานได้หลายครั้ง แต่ถ้านี่เป็นเรื่องจริงมันเกี่ยวข้องกับFROMอะไร?
12 postgresql  join 

1
pgAdmin 4 ไม่มีอุโมงค์ SSH ในตัวหรือไม่
เพิ่งลองใช้ pgAdmin 4 เป็นครั้งแรก ดูเหมือนว่าจะไม่มีการกำหนดค่า SSH ทันเนลสำหรับการเชื่อมต่อ ฉันค้นหาเอกสาร แต่ไม่มีการพูดถึงคุณลักษณะนี้ มันหายไปไหนดี?

1
วิธีการเปรียบเทียบ xmin และ txid_current () หลังจากการทำธุรกรรม ID wraparound?
นอกจากคอลัมน์ปกติแล้วตาราง Postgres ยังมีคอลัมน์ระบบต่าง ๆให้ใช้งาน หนึ่งในนั้นxminเก็บ ID ธุรกรรมที่ใช้ในการสร้างแถว ชนิดข้อมูลของมันคือxidจำนวนเต็มสี่ไบต์ที่ล้อมรอบในบางจุด (เช่นไม่จำเป็นต้องไม่ซ้ำกัน) ฟังก์ชันtxid_current()จะส่งคืน ID ธุรกรรมปัจจุบัน แต่bigintเนื่องจาก "ขยาย" ด้วยตัวนับ "ยุค" ดังนั้นมันจะไม่ล้อมรอบในช่วงอายุการติดตั้ง "(เพื่ออ้างอิงคู่มือ ) หากการรวมธุรกรรมไม่ได้เกิดขึ้นค่าทั้งคู่ดูเหมือนจะตรงกัน: # CREATE TABLE test (label text); CREATE TABLE # INSERT INTO test VALUES ('test') RETURNING txid_current(); txid_current -------------- 674500 (1 row) INSERT 0 1 # SELECT xmin FROM test; xmin …

1
ประสิทธิภาพของ postgres_fdw ช้า
แบบสอบถามต่อไปนี้ในต่างประเทศใช้เวลาประมาณ 5 วินาทีในการดำเนินการกับ 3.2 ล้านแถว: SELECT x."IncidentTypeCode", COUNT(x."IncidentTypeCode") FROM "IntterraNearRealTimeUnitReflexes300sForeign" x WHERE x."IncidentDateTime" >= '05/01/2016' GROUP BY x."IncidentTypeCode" ORDER BY 1; เมื่อฉันเรียกใช้คิวรีเดียวกันในตารางปกติมันจะส่งคืนภายใน 0.6 วินาที แผนการดำเนินการแตกต่างกันมาก: ตารางปกติ Sort (cost=226861.20..226861.21 rows=4 width=4) (actual time=646.447..646.448 rows=7 loops=1) Sort Key: "IncidentTypeCode" Sort Method: quicksort Memory: 25kB -> HashAggregate (cost=226861.12..226861.16 rows=4 width=4) (actual time=646.433..646.434 rows=7 …

2
ทำไมฉันไม่เห็นตารางของฉัน (PostgreSQL) เมื่อฉันใช้ \ dt (+) ภายใน psql
ฉันได้สร้างตารางdonorในสคีมาreferenceตาม: CREATE TABLE reference.donor ( donor_code smallint PRIMARY KEY, donor_name character varying NOT NULL, donor_type smallint REFERENCES reference.donor_type (type_id), alpha_2_code char(2) REFERENCES reference.iso_3166_1 (alpha_2_code) ); ฉันเติมตารางตาม: INSERT INTO reference.donor (donor_code, donor_name, donor_type, alpha_2_code) SELECT donor_code, donor_name, donor_type, alpha_2_code FROM reference.donor_template; เมื่อฉันวิ่ง: \dt+ reference.* ภายใน psql ฉันเห็นreference.donorตาราง: List of relations Schema …

1
รวมสองตารางเหตุการณ์ไว้ในไทม์ไลน์เดียว
รับสองตาราง: CREATE TABLE foo (ts timestamp, foo text); CREATE TABLE bar (ts timestamp, bar text); ฉันต้องการที่จะเขียนแบบสอบถามว่าค่าตอบแทนts, fooและbarที่แสดงถึงมุมมองแบบครบวงจรของค่าล่าสุด กล่าวอีกนัยหนึ่งถ้าfooมี: ts | foo -------- 1 | A 7 | B และbarบรรจุ: ts | bar -------- 3 | C 5 | D 9 | E ฉันต้องการคิวรีที่ส่งคืน: ts | foo | bar -------------- 1 …

1
เหตุใด SELECT * จึงเร็วกว่าการเลือกคอลัมน์ทั้งหมด (ตามลำดับคอลัมน์) ตามชื่อ
บนโต๊ะที่มีคอลัมน์ a, b, c, d, e, f, g, h, i, j, k ฉันได้รับ: select * from misty order by a limit 25; Time: 302.068 ms และ: select c,b,j,k,a,d,i,g,f,e,h from misty order by a limit 25; Time: 1258.451 ms มีวิธีในการเลือกคอลัมน์อย่างรวดเร็วหรือไม่? ปรับปรุง: ไม่มีดัชนีในตารางสร้างขึ้นใหม่ นี่คือการอธิบายการวิเคราะห์ดูเหมือนจะไม่เป็นประโยชน์: explain analyze select * from misty order by …

2
เหตุใดจึงต้องใช้ RDS มากกว่า EC2 สำหรับ Postgres
ฉันมีฐานข้อมูลกำลังทำงานอยู่บน EC2 เมื่อฉันต้องย้ายไปยังเครื่องที่ใหญ่กว่าคำถามของการใช้ RDS ขึ้นมา ราคา: ฉันจะได้รับEC2 c3.largeอินสแตนซ์ที่มีสอง SSDs (16GB แต่ละ) สอง vCPUs และหน่วยความจำ 4GB กับความต้องการ $ 0.132 ต่อชั่วโมง[1] ที่ใกล้เคียงที่สุด (ราคาพิจารณา) RDSเครื่องจะdb.m3.mediumราคา $ 0.125 ต่อชั่วโมง (เดี่ยว AZ) [2] เครื่องนี้มีจำนวนเดียวกันของหน่วยความจำ แต่เพียงหนึ่ง vCPU [3] นอกจากนี้ผมจะต้องมีค่าใช้จ่ายสำหรับการจัดเก็บและ io [2] ดังนั้นราคาจะคล้ายกันมากสำหรับสองคนนี้ ข้อดีสำหรับ EC2: ดังที่ได้กล่าวไปแล้ว vCPU อีกหนึ่งตัว ฉันสามารถวาง Write-Ahead-Log ลงบนดิสก์แผ่นที่สองเมื่อใช้ EC2 (การปรับปรุงประสิทธิภาพที่ยอดเยี่ยมเมื่อเขียนจำนวนมากไปยัง db) ฉันสามารถเรียกใช้pgbouncerบนอินสแตนซ์ EC2 ของฉัน …

1
ฉันจะจัดเรียงผลลัพธ์ของข้อความค้นหาแบบเรียกซ้ำในลักษณะคล้ายต้นไม้แบบขยายได้อย่างไร
สมมติว่าคุณมีnodesตารางแบบนี้: CREATE TABLE nodes ( node serial PRIMARY KEY, parent integer NULL REFERENCES nodes(node), ts timestamp NOT NULL DEFAULT now() ); มันแสดงให้เห็นถึงโครงสร้างต้นไม้เหมือนโหนดมาตรฐานที่มีรูตโหนดที่ด้านบนและโหนดเด็กหลายห้อยจากโหนดรูทหรือโหนดเด็กอื่น ๆ ให้เราแทรกค่าตัวอย่างสองสามค่า: INSERT INTO nodes (parent) VALUES (NULL), (NULL), (NULL), (NULL), (1), (1), (1), (1), (6), (1) , (6), (9), (6), (6), (3), (3), (3), (15); ตอนนี้ฉันต้องการเรียกรูต 10 …

4
จำเป็นต้องมี REINDEX หรือไม่หลังจาก CLUSTER
ฉันกำลังพิจารณาใช้ CLUSTER เพื่อเรียงลำดับตารางใหม่โดยดัชนี ฉันเข้าใจว่าการพักผ่อนหย่อนใจของข้อมูลตารางนี้ทำให้ดัชนีที่มีอยู่ทั้งหมดขยายตัวหรือไร้ประโยชน์ ฉันเห็นสิ่งบ่งชี้ว่าต้องมี REINDEX หลังจากกลุ่มข้อมูล ฉันพบการอ้างอิงอื่นที่บ่งชี้ว่า CLUSTER ทำ REINDEX เอกสารอย่างเป็นทางการกล่าวว่าไม่มีอะไรที่เกี่ยวกับดัชนีการเป็นส่วนหนึ่งของคลัสเตอร์หรือต้องการ (แม้ว่าจะไม่แนะนำให้ทำงานหลังจากวิเคราะห์คลัสเตอร์) ทุกคนสามารถแตกต่างกัน (เช่นกับการอ้างอิงบางส่วนไปยังเอกสารอย่างเป็นทางการ) สามารถพูดว่าต้องการ REINDEX หลังจาก CLUSTER หรือไม่
12 postgresql 

2
เลือกลำดับต่อเนื่องที่ยาวที่สุด
ฉันพยายามสร้างแบบสอบถามใน PostgreSQL 9.0 ที่ได้รับลำดับของแถวต่อเนื่องที่ยาวที่สุดสำหรับคอลัมน์ที่ระบุ พิจารณาตารางต่อไปนี้: lap_id (serial), lap_no (int), car_type (enum), race_id (int FK) ในกรณีที่มีความเป็นเอกลักษณ์ของแต่ละlap_no(race_id, car_type) ฉันต้องการให้คิวรีสร้างลำดับที่ยาวที่สุดสำหรับหนึ่งrace_idและcar_typeดังนั้นจึงส่งคืนint(หรือยาว) ที่สูงที่สุด ด้วยข้อมูลต่อไปนี้: 1, 1, red, 1 2, 2, red, 1 3, 3, red, 1 4, 4, red, 1 5, 1, blue, 1 6, 5, red, 1 7, 2, blue, 1 8, 1, green, …

3
“ AT TIME ZONE” พร้อมชื่อโซนบั๊ก PostgreSQL หรือไม่
ฉันตอบคำถามstackoverflowนี้และพบผลลัพธ์ที่แปลก: select * from pg_timezone_names where name = 'Europe/Berlin' ; name | abbrev | utc_offset | is_dst ---------------+--------+------------+-------- Europe/Berlin | CET | 01:00:00 | f และแบบสอบถามต่อไป select id, timestampwithtimezone, timestampwithtimezone at time zone 'Europe/Berlin' as berlin, timestampwithtimezone at time zone 'CET' as cet from data ; id | timestampwithtimezone | …

3
ขนาดฐานข้อมูลเริ่มต้นของ PostgreSQL
คำถามของฉันมี 2 ส่วน มีวิธีการระบุขนาดเริ่มต้นของฐานข้อมูลใน PostgreSQL หรือไม่? หากไม่มีคุณจะจัดการกับการแตกแฟรกเมนต์อย่างไรเมื่อฐานข้อมูลเติบโตขึ้นตามกาลเวลา ฉันเพิ่งย้ายจาก MSSQL ไปยัง Postgres และหนึ่งในสิ่งที่เราทำในโลก MSSQL เมื่อสร้างฐานข้อมูลคือการระบุขนาดเริ่มต้นของฐานข้อมูลและบันทึกธุรกรรม การกระจายตัวที่ลดลงนี้และประสิทธิภาพที่เพิ่มขึ้นโดยเฉพาะอย่างยิ่งถ้าขนาด "ปกติ" ของฐานข้อมูลเป็นที่รู้จักกันล่วงหน้า ประสิทธิภาพของฐานข้อมูลของฉันลดลงตามขนาดที่เพิ่มขึ้น ตัวอย่างเช่นปริมาณงานที่ฉันวางผ่านตามปกติใช้เวลา 10 นาที เมื่อฐานข้อมูลเติบโตขึ้นเวลานี้จะเพิ่มขึ้น การทำ VACUUM, VACUUM FULL และ VACUUM FULL ANALYZE ไม่ปรากฏขึ้นเพื่อแก้ไขปัญหา สิ่งที่แก้ปัญหาด้านประสิทธิภาพคือการหยุดฐานข้อมูลแยกส่วนไดรฟ์แล้วทำการ VACUUM FULL ANALYZE ใช้เวลาทดสอบประสิทธิภาพของฉันกลับไปเป็น 10 นาทีเดิม สิ่งนี้ทำให้ฉันสงสัยว่าการแตกออกเป็นส่วน ๆ คือสิ่งที่ทำให้ฉันเจ็บปวด ฉันไม่สามารถค้นหาการอ้างอิงถึงการจองพื้นที่ตาราง / ฐานข้อมูลใน Postgres ได้ ฉันกำลังใช้คำศัพท์ที่ไม่ถูกต้องและไม่พบสิ่งใดเลยหรือมีวิธีอื่นในการลดการแตกแฟรกเมนต์ของระบบไฟล์ใน Postgres ตัวชี้ใด ๆ …

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