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

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

3
การแก้ปัญหาการใช้งาน CPU สูงจากบริการ postgres และ postmaster
ฉันใช้เครื่องที่ใช้โอเพ่นซอร์ส (RHEL 6.2) ที่ใช้ซอฟต์แวร์ SIEM เมื่อฉันรันtopคำสั่งฉันเห็นpostgresและpostmasterทั้งคู่ด้วยการใช้งาน CPU 96% มีวิธีในการปักหมุดหรือดูว่าอะไรทำให้บริการเหล่านี้ซ้อนกัน?
27 postgresql 

3
ข้อ จำกัด กุญแจต่างประเทศของสมาชิกอาเรย์?
สมมติว่าฉันมีตารางที่มีบทบาทงาน: CREATE TABLE roles ( "role" character varying(80) NOT NULL, CONSTRAINT "role" PRIMARY KEY (role) ); สมมติว่าฉันมีตารางผู้ใช้และแต่ละแถว (ผู้ใช้ที่ระบุ) สามารถมีบทบาทงานได้ตามอำเภอใจ: CREATE TABLE users ( username character varying(12) NOT NULL, roles character varying(80)[] NOT NULL, CONSTRAINT username PRIMARY KEY (username) ); ฉันควรแน่ใจว่าสมาชิกแต่ละคนusers.roles[]มีอยู่ใน role.role สำหรับฉันดูเหมือนว่าสิ่งที่ฉันต้องการคือข้อ จำกัด ที่สำคัญต่างประเทศของสมาชิกแต่ละคนของusers.roles[]สิ่งนั้นหากอ้างอิงถึง role.role ดูเหมือนจะเป็นไปไม่ได้เมื่อใช้ postgres ฉันกำลังดูวิธีนี้ผิดหรือเปล่า? อะไรคือวิธีที่ "ถูกต้อง" …

1
การเพิ่มประสิทธิภาพดัชนีพร้อมวันที่
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา ฉันมีตารางวัตถุขนาดใหญ่ (แถว 15M +) ใน PostgreSQL 9.0.8 ซึ่งฉันต้องการค้นหาเขตข้อมูลที่ล้าสมัย ฉันต้องการแบ่งคำถามเป็นล้าน ๆ เพื่อความยืดหยุ่นในการปรับขนาดและการทำงานพร้อมกันและฉันต้องการดึงข้อมูลทั้งหมดด้วยฟิลด์ updated_at ด้วยวันที่ไม่กี่วันที่ผ่านมา ฉันได้ลองใช้ดัชนีจำนวนมากและข้อความค้นหาหลายล้านรายการและดูเหมือนว่าฉันจะไม่สามารถทำงานได้ภายใน 100 วินาทีด้วยฮาร์ดแวร์ Ronin ของ Heroku ฉันกำลังมองหาคำแนะนำที่ฉันไม่ได้พยายามทำให้มีประสิทธิภาพมากที่สุด ลอง # 1 EXPLAIN ANALYZE SELECT count(*) FROM objects WHERE (date(updated_at)) < (date(now())-7) AND id >= 5000001 AND id …

2
แหล่งที่มาหลายไฟล์พร้อมกันด้วย psql
ฉันต้องการรันสคริปต์ sql หลาย ๆ ตัวตามลำดับโดยpsqlเป็นธุรกรรมเดียวเพื่อตั้งค่าสคีมาฐานข้อมูลของฉัน วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร? ในอดีตฉันรู้ว่าฉันมีสคริปต์หลักที่ฉันpsqlพบซึ่งรวมถึงไฟล์อื่น ๆ ด้วย แต่ฉันไม่จำไวยากรณ์ของสคริปต์นี้
27 postgresql  psql 

1
บทบาท PostgreSQL กับผู้ใช้ให้สิทธิ์
ขณะนี้ฉันเรียนรู้ความแตกต่างระหว่าง PostgreSQL และ MySQL เนื่องจากฉันมีโครงการใหม่และฉันตั้งใจจะย้ายซอฟต์แวร์ที่มีอยู่จาก MySQL ไปยัง PostgreSQL ฉันเริ่มสร้างตาราง HTML ด้วยการเปรียบเทียบคำสั่ง (สำหรับผู้ใช้ / ฐานข้อมูล / พรอมต์คำสั่ง ฯลฯ ) ระหว่างสองรายการ หลังจากอ่านคำตอบที่นี่ฉันสังเกตเห็นว่าroleดูเหมือนจะใช้เป็นกลุ่ม กับ MySQL ฉันมีสองผู้ใช้ของประชาชนโดยทั่วไป ( DELETE, INSERT, SELECTและUPDATEสิทธิ์) และผู้ดูแลระบบที่มีสิทธิ์เพิ่มเติมคู่ ดังนั้นโดยทั่วไปในพรอมต์คำสั่ง Windows 7 (การพัฒนาท้องถิ่นเท่านั้น) ... บทบาทผู้ใช้กลุ่มหรือคำที่ใช้อย่างหลวม ๆ กับ PostgreSQL หรือไม่? ฉันจะให้สิทธิ์เฉพาะกับผู้ใช้เฉพาะสำหรับทุกตารางในฐานข้อมูลได้อย่างไร ฉันจะให้สิทธิ์ทั้งหมดแก่ผู้ใช้เฉพาะสำหรับตารางทั้งหมดในฐานข้อมูลได้อย่างไร ถ้าเปรียบเทียบบทบาทจะเปรียบเทียบกับผู้ใช้เมื่อใช้GRANTหรือREVOKEเพื่อการอนุญาตของผู้ใช้ได้อย่างไร
27 postgresql  users 

1
ทำไม PostgreSQL ของฉันเรียงตามตัวพิมพ์เล็ก - ใหญ่
ฉันมี Postgres 9.4.4 ทำงานบน Debian และฉันได้รับORDER BYพฤติกรรมดังต่อไปนี้: veure_test=# show LC_COLLATE; lc_collate ------------- en_US.UTF-8 (1 row) veure_test=# SELECT regexp_split_to_table('D d a A c b CD Capacitor', ' ') ORDER BY 1; regexp_split_to_table ----------------------- a A b c Capacitor CD d D (8 rows) และuname -a: Linux ---- 3.2.0-4-amd64 #1 SMP Debian …

2
ฉันจะจัดทำดัชนี UUID ใน Postgres ได้อย่างไร
ฉันใหม่กับ PostgreSQL และค่อนข้างใหม่สำหรับฐานข้อมูลโดยทั่วไป มีวิธีที่กำหนดไว้ว่าเราควรทำดัชนีค่าUUIDใน Postgres หรือไม่? ฉันแยกระหว่างการใช้การแฮชและการใช้คู่กรณีเว้นแต่ว่ามีบางอย่างในตัวที่ใช้โดยอัตโนมัติ สิ่งที่ฉันใช้คือการจัดการข้อมูลจำนวนมหาศาล ดัชนี "text_ops" ตระกูลโอเปอเรเตอร์ SP-GiST ใช้ trie เนื่องจาก UUID นั้นค่อนข้างยาวและแตกต่างกันมากเสียงเหล่านี้น่าดึงดูดแม้ว่าฉันจะทำการค้นหาแบบเต็มเท่านั้น นอกจากนี้ยังมีตัวเลือกแฮช Hashing คือ O (1) และฉันไม่จำเป็นต้องทำการเปรียบเทียบใด ๆ นอกเหนือจากความเท่าเทียมกันแน่นอน แต่เนื่องจาก UUID ค่อนข้างยาวฉันกลัวว่าการสร้างแฮชจากพวกเขาจะเสียเวลามาก หรือสิ่งนี้ขึ้นอยู่กับระบบมากเกินไปและใช้เฉพาะหรือไม่ ฉันควรใช้bigserialในกรณีส่วนใหญ่ แต่ฉันถูกบอกให้ใช้uuidสำหรับเรื่องนี้ เราต้องการuuidเพราะเราอาจมีเซิร์ฟเวอร์หลายเครื่องที่ใช้ฐานข้อมูลที่แตกต่างกันดังนั้นจึงไม่มีการรับประกันว่าเราจะมี bigint ที่ไม่ซ้ำกัน เราสามารถใช้ลำดับที่แตกต่างกัน (และ seed) สำหรับแต่ละเซิร์ฟเวอร์ แต่ก็ยังไม่ยืดหยุ่นเท่ากับ UUID ตัวอย่างเช่นเราจะไม่สามารถโยกย้ายรายการฐานข้อมูลจากเซิร์ฟเวอร์หนึ่งไปยังเซิร์ฟเวอร์อื่นโดยไม่ต้องแปลง ID และการอ้างอิงของพวกเขาทุกที่
26 postgresql  index  uuid 

1
ดัชนี: จำนวนเต็มกับประสิทธิภาพของสตริงถ้าจำนวนโหนดเท่ากัน
ฉันกำลังพัฒนาแอพพลิเคชั่นใน Ruby on Rails ด้วยฐานข้อมูล PostgreSQL (9.4) สำหรับกรณีการใช้งานของฉันคอลัมน์ในตารางจะถูกค้นหาบ่อยมากเนื่องจากทั้งจุดของแอปพลิเคชันกำลังค้นหาแอตทริบิวต์ที่เฉพาะเจาะจงมากในแบบจำลอง ฉันกำลังตัดสินใจว่าจะใช้integerชนิดหรือเพียงแค่ใช้ประเภทสตริงทั่วไป (เช่นcharacter varying(255), ซึ่งเป็นค่าเริ่มต้นใน Rails ) สำหรับคอลัมน์ที่เป็นผมไม่แน่ใจว่าสิ่งที่แตกต่างของประสิทธิภาพการทำงานจะอยู่ในดัชนี คอลัมน์เหล่านี้เป็น enums มีขนาดคงที่สำหรับจำนวนค่าที่เป็นไปได้ที่สามารถมีได้ ส่วนใหญ่ความยาว enum ไม่เกิน 5 หมายถึงดัชนีจะมีมากขึ้นหรือน้อยคงที่ตลอดอายุการใช้งานของโปรแกรม ; ดังนั้นจำนวนเต็มและดัชนีสตริงจะเหมือนกันในจำนวนโหนด อย่างไรก็ตามสตริงที่จะทำดัชนีอาจมีความยาวประมาณ 20 ตัวอักษรซึ่งในหน่วยความจำประมาณ 5x ของจำนวนเต็ม (ถ้าจำนวนเต็ม 4 ไบต์และสตริงนั้นเป็น ASCII บริสุทธิ์ที่ 1 ไบต์ต่อตัวอักษรดังนั้นสิ่งนี้จะเก็บไว้) ฉันไม่รู้ว่าเอ็นจิ้นฐานข้อมูลทำการค้นหาดัชนีอย่างไร แต่ถ้ามันจำเป็นต้อง "สแกน" สตริงจนกว่าจะตรงกันทั้งหมดดังนั้นในสาระสำคัญซึ่งหมายความว่าการค้นหาสตริงจะช้ากว่าการค้นหาจำนวนเต็ม 5 เท่า "สแกน" จนกระทั่งตรงกับการค้นหาจำนวนเต็มจะเป็น 4 ไบต์แทน 20 นี่คือสิ่งที่ฉันจินตนาการ ค่าการค้นหาคือ …

5
PostgreSQL: วิธีสร้างสคีมาฐานข้อมูลแบบเต็มในฐานข้อมูลเดียวกันได้อย่างไร
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา ฉันจะคัดลอกpublicสคีมาของฉันลงในฐานข้อมูลเดียวกันที่มีโครงสร้างตารางเต็มรูปแบบ, ข้อมูล, ฟังก์ชั่น, fk, pk และอื่น ๆ เวอร์ชัน Postgres ของฉันคือ 8.4 PS ฉันต้องคัดลอกสคีมาฐานข้อมูล
26 postgresql 

1
PostgreSQL ลบจากล้มเหลวด้วยข้อผิดพลาด: พยายามที่จะลบ tuple ที่มองไม่เห็น
คำถามนี้ถูกโยกย้ายจาก Server Fault เนื่องจากสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 3 ปีที่แล้ว ความผิดพลาด กำลังพยายามลบสิ่งอันดับที่มีการประทับเวลาที่ไม่ถูกต้องด้วย DELETE FROM comments WHERE date > '1 Jan 9999' OR date < '1 Jan 2000' OR date_found > '1 Jan 9999' OR date_found < '1 Jan 2000'; สิ้นสุดลงใน ERROR: attempted to delete invisible tuple มีรายชื่อผู้รับจดหมายจากปี 2009 ที่พูดถึงข้อความแสดงข้อผิดพลาดเดียวกันที่ …

3
ฉันจะแสดงรายการตารางทั้งหมดใน schemas ทั้งหมดที่เป็นของผู้ใช้ปัจจุบันใน Postgresql ได้อย่างไร
ฉันสามารถแสดงรายการตารางทั้งหมดในแบบแผนทั้งหมดที่ใช้ > \dt *.* แต่นั่นยังแสดงรายการตารางระบบที่มีจำนวนมากกว่าตารางของฉันที่ฉันสนใจ ฉันต้องการตารางทั้งหมด (และอาจเป็นไปได้) ที่สร้างขึ้นโดยฉันในสคีมาสาธารณะและสคีมาใด ๆ ที่ฉันกำหนดไว้ ฉันหวังที่จะหาวิธีการทำเช่นนี้โดยไม่ต้องเพิ่ม schema ที่เส้นทางการค้นหาอย่างชัดเจนในขณะที่ฉันสร้างพวกเขาตามที่อธิบายไว้ที่นี่: /programming//a/12902069 แก้ไข: จากคำตอบที่ยอมรับฉันได้สร้างมุมมองต่อไปนี้: create view my_tables as select table_catalog, table_schema, table_name, table_type from information_schema.tables where table_schema not in ('pg_catalog', 'information_schema'); และตอนนี้คำสั่งต่อไปนี้ให้สิ่งที่ฉันต้องการ: select * from my_tables;

2
ใช้ MongoDB และ PostgreSQL ร่วมกัน
โครงการปัจจุบันของฉันคือการทำงานของระบบจัดการเอกสารโรงงาน ที่กล่าวว่ามีริ้วรอยบางอย่าง (แปลกใจแปลกใจ) ในขณะที่รอยย่นบางอย่างมีความเฉพาะเจาะจงกับโครงการฉันเชื่อว่ามีข้อสังเกตทั่วไปและคำถามที่เกิดขึ้นซึ่งไม่มีคำตอบที่ยอมรับ (ซึ่งฉันสามารถหาได้) และที่เกี่ยวข้องกับโดเมนปัญหาที่กว้างขึ้น . มีจำนวนมากที่นี่และฉันไม่แน่ใจว่าเป็นแบบที่ดีสำหรับรูปแบบคำถามและคำตอบ StackExchange แต่ฉันคิดว่ามันเป็น) คำถามที่ตอบได้และข) ไม่เฉพาะเจาะจงมากพอที่จะเป็นประโยชน์ต่อชุมชน ข้อพิจารณาบางอย่างของฉันนั้นเฉพาะเจาะจงสำหรับฉัน แต่ฉันคิดว่าคำถามนี้อาจเป็นประโยชน์กับทุกคนที่ต้องเผชิญกับการตัดสินใจเลือก SQL กับ NoSQL เทียบกับทั้งคู่ พื้นหลัง: แอปพลิเคชันเว็บที่เรากำลังสร้างประกอบด้วยข้อมูลที่สัมพันธ์กันอย่างชัดเจนในธรรมชาติรวมถึงข้อมูลที่มุ่งเน้นที่เอกสาร เราต้องการเค้กและกินมันด้วย TL; DR: ฉันคิดว่า # 5 ด้านล่างผ่านการทดสอบกลิ่น คุณ ใครบ้างมีประสบการณ์กับการรวม SQL และ NOSQL ในแอปพลิเคชันเดียวหรือไม่ ฉันพยายามระบุวิธีที่เป็นไปได้ทั้งหมดสำหรับปัญหานี้ในด้านล่าง ฉันพลาดตัวเลือกที่มีแนวโน้มหรือไม่ ซับซ้อน: มีคลาสเอกสารที่แตกต่างกันมากมาย ข้อกำหนดนี้ต้องการเอกสารที่แตกต่างกันหลายสิบฉบับ หมายเลขนี้จะสูงขึ้นเท่านั้น กรณีที่ดีที่สุดคือกรณีที่เราสามารถใช้ภาษาเฉพาะโดเมนแบบง่ายการสร้างรหัสและสคีมาที่มีความยืดหยุ่นเพื่อให้ผู้เชี่ยวชาญด้านโดเมนสามารถจัดการกับการเพิ่มคลาสเอกสารใหม่โดยไม่ต้องมีการแทรกแซงจาก DBA หรือโปรแกรมเมอร์ (หมายเหตุ: ทราบอยู่แล้วว่าเรากำลังดำเนินการตามกฎข้อที่สิบของ Greenspun ) ความสมบูรณ์ของการเขียนที่สำเร็จก่อนหน้านี้เป็นข้อกำหนดหลักของโครงการ ข้อมูลจะเป็นสิ่งสำคัญทางธุรกิจ ความหมายแบบเต็มกรดในการเขียนสามารถเสียสละหากสิ่งที่จะได้รับการเขียนเขียนอยู่ประสบความสำเร็จ เอกสารมีความซับซ้อน …

1
วิธีการเรียกคืนพื้นที่ดิสก์บน PostgreSQL
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 5 ปีที่ผ่านมา ฉันมีการติดตั้งฐานข้อมูลท้องถิ่น 9.1 กับตารางน้อยซึ่งมี cca บันทึก 300 mio และฐานข้อมูลเพิ่มขึ้นเป็นประมาณ 20 GB หลังจากนั้นฉันออกdelete fromคำสั่งให้ลบระเบียนทั้งหมดจากมัน (ฉันควรจะใช้truncateแต่ฉันก็ไม่รู้) ดังนั้นฉันจึงสูญญากาศเต็มในฐานข้อมูลของฉันเพื่อเรียกคืนพื้นที่ดิสก์ แต่ก็ไม่ได้ช่วย ปัญหาของฉันดูเหมือนกับปัญหานี้แต่ไม่มีวิธีแก้ไข ฉันได้ตรวจสอบเธรดและเอกสารนี้แล้วใน"การกู้คืนพื้นที่ว่างในดิสก์"แต่ยังหาวิธีแก้ปัญหาไม่ได้ ฉันใช้รหัสนี้เพื่อรับขนาดของตารางทั้งหมด SELECT nspname || '.' || relname AS "relation", pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size" FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = …

2
LC_CTYPE มีผลกระทบอะไรกับฐานข้อมูล PostgreSQL
ดังนั้นฉันมีเซิร์ฟเวอร์ Debian ไม่กี่เครื่องที่มี PostgreSQL อยู่ ในอดีตเซิร์ฟเวอร์เหล่านั้นและ PostgreSQL มีการแปลเป็นภาษาละตินด้วยชุดอักขระ Latin 9 และย้อนกลับไปได้ ตอนนี้เราต้องจัดการกับสิ่งต่างๆเช่นโปแลนด์กรีกหรือจีนดังนั้นการเปลี่ยนมันจึงกลายเป็นปัญหาที่กำลังเติบโต เมื่อฉันพยายามสร้างฐานข้อมูล UTF8 ฉันได้รับข้อความ: ข้อผิดพลาด: การเข้ารหัส UTF8 ไม่ตรงกับรายละเอียดสถานที่ fr_FR: การตั้งค่า LC_CTYPE ที่เลือกต้องใช้การเข้ารหัส LATIN9 ไม่กี่ครั้งที่ฉันได้ทำการวิจัยเกี่ยวกับเรื่องนี้กับเพื่อนเก่าของ Google และสิ่งที่ฉันพบคือขั้นตอนที่ซับซ้อนเช่นการอัปเดต Debian LANG, คอมไพล์ PostgreSQL ด้วยชุดอักขระที่ถูกต้องแก้ไขLC_ตัวแปรระบบทั้งหมดและโซลูชันที่ไม่ชัดเจนอื่น ๆ ดังนั้นในขณะนี้เราจึงปล่อยให้ปัญหานี้เกิดขึ้น เมื่อเร็ว ๆ นี้มันกลับมาอีกครั้งชาวกรีกต้องการสิ่งของและละติน 9 ไม่ต้องการ และในขณะที่ฉันกำลังตรวจสอบปัญหานี้อีกครั้งเพื่อนร่วมงานคนหนึ่งมาหาฉันและพูดว่า "ไม่นะมันง่ายดูสิ" เขาไม่ได้ทำการแก้ไขอะไรเลยไม่ได้ใช้กลอุบายเขาแค่ทำแบบสอบถาม SQL นี้: CREATE DATABASE my_utf8_db WITH ENCODING='UTF8' OWNER=admin …

4
บันทึก / ส่งออกการตั้งค่าการกำหนดค่ารายการเซิร์ฟเวอร์ PGAdmin
ฉันมีการเชื่อมต่อที่ตั้งค่าไว้มากมายในกลุ่มเซิร์ฟเวอร์มีวิธีที่ฉันสามารถบันทึกสิ่งนี้ได้หรือไม่? ไม่เพียงบันทึกรหัสผ่าน แต่เป็นการตั้งค่ากลุ่มเซิร์ฟเวอร์

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