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

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

2
ค้นหาแถวที่มีเลขจำนวนเต็มตามลำดับที่กำหนด
ปัญหา หมายเหตุ: ผมหมายถึงลำดับคณิตศาสตร์ไม่ใช่กลไกลำดับของ PostgreSQL ฉันมีตารางที่แสดงลำดับของจำนวนเต็ม ความหมายคือ: CREATE TABLE sequences ( id serial NOT NULL, title character varying(255) NOT NULL, date date NOT NULL, sequence integer[] NOT NULL, CONSTRAINT "PRIM_KEY_SEQUENCES" PRIMARY KEY (id) ); เป้าหมายของฉันคือการหาแถวโดยใช้ลำดับที่กำหนด กล่าวคือแถวที่sequenceเขตข้อมูลเป็นลำดับที่มีการเรียงลำดับที่กำหนด (ในกรณีของฉันลำดับจะเรียงตามลำดับ) ตัวอย่าง สมมติว่าตารางมีข้อมูลต่อไปนี้: +----+-------+------------+-------------------------------+ | id | title | date | sequence | +----+-------+------------+-------------------------------+ | …

3
Postgres ทำการสแกนตามลำดับแทนการสแกนดัชนี
ฉันมีตารางที่มีประมาณ 10 ล้านแถวในนั้นและดัชนีในเขตข้อมูลวันที่ เมื่อฉันลองและแยกค่าที่ไม่ซ้ำกันของเขตข้อมูลที่จัดทำดัชนี Postgres เรียกใช้การสแกนตามลำดับแม้ว่าชุดผลลัพธ์มีเพียง 26 รายการ เหตุใดเครื่องมือเพิ่มประสิทธิภาพจึงเลือกแผนนี้ และฉันจะหลีกเลี่ยงได้อย่างไร จากคำตอบอื่น ๆ ฉันสงสัยว่านี่เกี่ยวข้องกับแบบสอบถามมากเท่ากับดัชนี explain select "labelDate" from pages group by "labelDate"; QUERY PLAN ----------------------------------------------------------------------- HashAggregate (cost=524616.78..524617.04 rows=26 width=4) Group Key: "labelDate" -> Seq Scan on pages (cost=0.00..499082.42 rows=10213742 width=4) (3 rows) โครงสร้างตาราง: http=# \d pages Table "public.pages" Column | Type …

2
การแทรก M: ความสัมพันธ์จำนวนมากใน PostgreSQL
ฉันต้องการนำเข้าข้อมูลจากฐานข้อมูลเก่าไปยังฐานข้อมูลใหม่ที่มีโครงสร้างแตกต่างกันเล็กน้อย ตัวอย่างเช่นในฐานข้อมูลเก่ามีพนักงานบันทึกตารางและหัวหน้างานของพวกเขาอยู่: CREATE TABLE employee (ident TEXT PRIMARY KEY, name TEXT, supervisor_name TEXT) ตอนนี้ฐานข้อมูลใหม่จะเป็นดังนี้: CREATE TABLE person (id BIGSERIAL PRIMARY KEY, name TEXT, old_ident TEXT); CREATE TABLE team (id BIGSERIAL PRIMARY KEY); CREATE TABLE teammember (person_id BIGINT, team_id BIGINT, role CHAR(1)); นั่นคือแทนที่จะเป็นตารางธรรมดาของพนักงานที่มีชื่อหัวหน้างานของพวกเขาฐานข้อมูลใหม่ (ทั่วไปมากกว่า) ช่วยให้สามารถสร้างทีมงานของคน พนักงานเป็นสมาชิกที่มีบทบาทผู้บังคับบัญชาที่มีบทบาท'e''s' คำถามคือวิธีการย้ายข้อมูลจากemployeeไปยังโครงสร้างใหม่อย่างง่ายดายหนึ่งทีมต่อคู่หัวหน้างาน - พนักงาน ตัวอย่างเช่นพนักงาน employee: …

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

1
PostgreSQL bytea กับ smallint []
ฉันต้องการนำเข้าข้อมูลอนุกรมเวลาหลายช่องทางขนาดใหญ่ (100Mb - 1 GB) ลงในฐานข้อมูล PostgreSQL ข้อมูลมาจากไฟล์ฟอร์แมต EDFที่แบ่งข้อมูลเป็น "บันทึก" หรือ "ยุค" ซึ่งโดยทั่วไปแล้วแต่ละวินาที บันทึกยุคของแต่ละคนถือสัญญาณสำหรับแต่ละช่องข้อมูลเป็นอาร์เรย์ลำดับของจำนวนเต็มสั้น ฉันได้รับคำสั่งให้เก็บไฟล์ไว้ในฐานข้อมูลในกรณีเลวร้ายที่สุดในฐานะ BLOB ระบุว่าฉันต้องการตรวจสอบตัวเลือกที่จะช่วยให้ฉันทำอะไรเพิ่มเติมกับข้อมูลในฐานข้อมูลเช่นอำนวยความสะดวกในการค้นหาตามข้อมูลสัญญาณ แผนเริ่มต้นของฉันคือการจัดเก็บข้อมูลเป็นหนึ่งแถวต่อระเบียนยุค สิ่งที่ฉันพยายามชั่งน้ำหนักคือการจัดเก็บข้อมูลสัญญาณจริงตามประเภท bytea หรือ smallint [] (หรือแม้แต่ smallint [] []) ชนิด ใครช่วยแนะนำคนอื่นได้บ้าง ฉันสนใจค่าใช้จ่ายในการจัดเก็บและเข้าถึง การใช้งานมีแนวโน้มที่จะถูกแทรกหนึ่งครั้งอ่านเป็นครั้งคราวไม่เคยอัปเดต หากมีการห่อเป็นประเภทกำหนดเองได้ง่ายขึ้นซึ่งฉันสามารถเพิ่มฟังก์ชั่นสำหรับการวิเคราะห์การเปรียบเทียบบันทึกได้ดีกว่ามาก ไม่ต้องสงสัยเลยว่าฉันมีรายละเอียดน้อยมากดังนั้นอย่าลังเลที่จะเพิ่มความคิดเห็นเกี่ยวกับสิ่งที่คุณต้องการให้ฉันชี้แจง

2
ส่งคืนการนับสำหรับหลายช่วงในคำสั่ง SELECT เดียว
ฉันมีตารางฐานข้อมูล Postgres fooที่มีคอลัมน์สำหรับscoreช่วงนั้นตั้งแต่ 0 - 10 ฉันต้องการให้แบบสอบถามส่งคืนจำนวนคะแนนทั้งหมดจำนวนคะแนนระหว่าง 0 ถึง 3 จำนวนคะแนนระหว่าง 4 และ 6 และจำนวนคะแนนระหว่าง 7 และ 10 สิ่งที่ชอบดังต่อไปนี้: SELECT COUNT(*) as total, COUNT( SELECT * from foo where score between 0 and 3; ) as low, COUNT( SELECT * from foo where score between 4 and 6; ) as …

1
วิธีดูข้อความค้นหา postgres แบบเต็มบล็อก
ฉันใช้ข้อความจากหน้านี้เพื่อดูการบล็อกข้อความค้นหาใน Postgres SELECT bl.pid AS blocked_pid, a.usename AS blocked_user, ka.query AS blocking_statement, now() - ka.query_start AS blocking_duration, kl.pid AS blocking_pid, ka.usename AS blocking_user, a.query AS blocked_statement, now() - a.query_start AS blocked_duration FROM pg_catalog.pg_locks bl JOIN pg_catalog.pg_stat_activity a ON a.pid = bl.pid JOIN pg_catalog.pg_locks kl ON kl.transactionid = bl.transactionid AND kl.pid …

2
เป็นไปได้ไหมที่จะมีผู้ใช้นับพันคนใน Postgres?
เรากำลังสร้าง SAAS ที่เราจะมีลูกค้ามากที่สุด 50,000 คน เรากำลังพิจารณาที่จะสร้างผู้ใช้ในฐานข้อมูล Postgres สำหรับลูกค้าแต่ละราย เราจะแมปผู้ใช้แต่ละรายที่ลงชื่อเข้าใช้บริการของเรากับผู้ใช้ในฐานข้อมูลเพื่อให้แน่ใจว่าพวกเขาสามารถเข้าถึงข้อมูลของตนเองได้เท่านั้น นอกจากนี้เรายังต้องการใช้แนวทางการตรวจสอบโดยตรงในฐานข้อมูลด้วยโซลูชั่นนี้ซึ่งใช้ทริกเกอร์ หากลูกค้าแต่ละรายมีผู้ใช้ฐานข้อมูลของตัวเองมันจะง่ายมากที่จะดูว่าใครทำอะไรแม้ว่าลูกค้าสองคนจะแบ่งปันข้อมูลเดียวกัน เราจะประสบปัญหาที่ไม่คาดคิดหรือไม่เพราะเรามีผู้ใช้งาน 50,000 คนในฐานข้อมูลของเราหรือไม่? ประสิทธิภาพที่ชาญฉลาดหรือการบริหารที่ชาญฉลาด อาจรวมการเชื่อมต่ออาจจะยากขึ้น แต่ฉันไม่รู้จริงๆว่าเราต้องการหรือไม่

2
การแทรกหลายแถวเทียบกับการแทรกแถวเดี่ยวหลายครั้ง
ในแอพของฉันฉันจะแทรกหลายแถวเมื่อฉันทำได้เพราะมันช่วยลดจำนวนรอบการเดินทางระหว่างฐานข้อมูลและแอป อย่างไรก็ตามฉันอยากรู้อยากเห็นมีข้อดีอื่น ๆ อีกไหม? ตัวอย่างเช่นหากมีการแทรกหลายแถวพร้อมกันเช่นนี้ insert into tbl (c1, c2) values (v1, v2) (v3, v4) เมื่อเทียบกับ: insert into tbl (c1, c2) values (v1, v2) insert into tbl (c1, c2) values (v3, v4) และตารางมีดัชนีดัชนีคำนวณหนึ่งครั้งในกรณีแรกและสองครั้งในกรณีที่สองหรือไม่ หรือมันมักจะใส่ครั้งเดียวต่อ? สมมติว่าแบบสอบถามทั้งสองอยู่ในธุรกรรมเดียวกัน ฉันใช้ PostgreSQL

1
การปรับปรุงการอัพเดทพร้อมกันใน Postgres
ฉันใช้คำสั่ง Postgres พร้อมกันเช่นนี้: UPDATE foo SET bar = bar + 1 WHERE baz = 1234 แบบสอบถามแต่ละรายการมีผลต่อจำนวน K แถวคงที่และฉันไม่สามารถหาวิธีบังคับใช้ลำดับที่แถวนั้นได้รับการอัปเดตได้ฉันจะสิ้นสุดด้วยการหยุดชะงัก ขณะนี้ฉันแก้ไขปัญหาด้วยการบังคับใช้คำสั่งซื้อด้วยตนเอง แต่นั่นหมายความว่าฉันต้องดำเนินการค้นหามากกว่าที่ฉันต้องการในขณะที่เพิ่มความซับซ้อนในการค้นหาจาก O (log N + K) เป็น O (K log N) มีวิธีการปรับปรุงประสิทธิภาพโดยไม่สิ้นสุดความเสี่ยงต่อการหยุดชะงักหรือไม่? ฉันสงสัยว่าการแทนที่(baz)ดัชนีด้วย(baz, id)ดัชนีอาจทำงานได้หาก Postgres อัปเดตแถวในลำดับเดียวกันกับที่สแกนไปแล้วนี่เป็นวิธีการที่คุ้มค่าหรือไม่

2
ทำซ้ำบางตารางจากฐานข้อมูลหนึ่งไปยังอีก postgres
ฉันมีสถานการณ์ต่อไปนี้: ฉันมีเครื่องสามเครื่องที่ใช้ฐานข้อมูล postgresql เครื่องหนึ่งเก็บข้อมูลบัญชีลูกค้า (เรียกเครื่องนี้ C) อีกสองเครื่องเก็บข้อมูลบันทึกลูกค้า (เรียก L1 และ L2 เหล่านี้) สาเหตุของการแยกคือการแยกโหลดผ่านเครื่องหลายเครื่อง (ดังนั้นลูกค้าบางรายส่งข้อมูลการบันทึกไปที่ L1, บางเครื่องไปที่ L2 ... และอาจใช้เวลาสักครู่ L3, L4, ... ) เมื่อดึงข้อมูลการบันทึกในหลักการฉันต้องการที่จะสามารถเข้าร่วมระหว่างการเข้าสู่ระบบตารางใน Ln และตารางบัญชีลูกค้าใน C. ในความเป็นจริงฉันไม่สามารถเข้าร่วมแบบนี้ (และแม้ว่าฉันจะทำได้ฉันต้องการ เพื่อหลีกเลี่ยงการโหลด C) ความคิดของฉันคือการทำซ้ำตารางบน C ไปยังแต่ละ L1, L2, ... เพื่อให้ฉันสามารถรวม เท่าที่ตารางจาก C เกี่ยวข้อง C คือ master และ L1, L2, ... เป็นทาส แต่สำหรับตารางอื่น …

1
จะแก้ไข `postgresql.conf` ด้วย pgAdmin 3 ได้อย่างไร
วิธีแก้ไขไฟล์ 'postgresql.conf' ด้วยแอป pgAdmin อย่างไร ด้วย pgAdmin 1.18.1 บน Postgres 9.3.x เมื่อฉันเลือกFile> Open postgresql.confฉันจะได้รับกล่องโต้ตอบตัวเลือกไฟล์ และใช่ฉันเชื่อมต่อใน pgAdmin เป็น superuser 'postgres' ฉันรู้ว่าฉันทำสิ่งนี้ใน Postgres รุ่นเก่ากว่าแล้ว

1
pgBouncer ใช้งานได้ดี แต่บางครั้งก็ใช้งานไม่ได้
ฉันกำลังเรียกใช้ pgBouncer หน้าฐานข้อมูล postgres 9 ที่ไม่ว่าง สำหรับส่วนใหญ่เวลาทำงานได้ดี แต่ทุก ๆ สองสามชั่วโมงฉันจะได้รับอีเมลข้อผิดพลาดจากแอปพลิเคชันของฉันโดยมีข้อยกเว้นจาก psycopg2: OperationalError ('ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์: ไม่สามารถกำหนดที่อยู่ที่ร้องขอเซิร์ฟเวอร์ทำงานบนโฮสต์ "neo-hulk" และยอมรับการเชื่อมต่อ TCP / IP บนพอร์ต 6432 หรือไม่') แอพนี้เป็นแอพที่มีคนทำงานคื่นฉ่ายหลายคนกำลังทำงานอยู่ เมื่อข้อผิดพลาดเหล่านั้นมาถึงฉันจะตรวจสอบ pgbouncer db และขนาดพูลอยู่ในขีด จำกัด หลังจากการทดลองบางอย่างฉันได้ตั้งค่าขนาดสูงสุดของพูลเป็น 400 และขนาดพูลเป็น 200 โหมดพูคือ "เซสชัน" (คำขอส่วนใหญ่จะกระทำโดยอัตโนมัติเกือบจะไม่มีธุรกรรม) อะไรทำให้ pgBouncer 'หายไป' อย่างนั้น? เป็นเพียงช่วงเวลาสั้น ๆ เท่านั้น (และโดยรวมแล้วเรากำลังพูดถึงคำขอจำนวนเล็กน้อยเมื่อเทียบกับปริมาณคำขอที่แท้จริงที่มอบให้) แต่คำขอที่ล้มเหลวนั้นมีความสำคัญ ขอบคุณ!


2
ฉันจะตรวจสอบได้อย่างไรว่าคอลัมน์ถูกกำหนดให้เป็นชนิดข้อมูลอนุกรมแทนที่จะเป็นจำนวนเต็มตามแค็ตตาล็อกหรือไม่
ดังนั้นตอนนี้ฉันกำลังสร้าง SQL เพื่ออ่านแค็ตตาล็อก postgres (9.1) เพื่อสร้างคำจำกัดความของตาราง อย่างไรก็ตามฉันพบปัญหากับชนิดข้อมูล SERIAL / BIGSERIAL ตัวอย่าง: CREATE TABLE cruft.temp ( id BIGSERIAL PRIMARY KEY ); SELECT * FROM information_schema.columns WHERE table_schema='cruft' AND table_name='temp'; "db","cruft","temp","id",1,"nextval('cruft.temp_id_seq'::regclass)","NO","bigint",,,64,2,0,,,,,,,,,,,,,"db","pg_catalog","int8",,,,,"1","NO","NO",,,,,,,"NEVER",,"YES" มันทำให้ฉันชื่อฐานข้อมูล (db), ชื่อ schema (cruft), ชื่อตาราง (temp), ชื่อคอลัมน์ (id), ค่าเริ่มต้น (nextval (... )), และชนิดข้อมูล (bigint และ int8 .. ไม่ใหญ่มาก) ... ฉันรู้ว่าฉันสามารถตรวจสอบเพื่อดูว่าค่าเริ่มต้นเป็นลำดับ …

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