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

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

1
แนวทางปฏิบัติที่ดีที่สุดสำหรับการเปลี่ยนสคีมาและการย้ายข้อมูลไปยังฐานข้อมูลสดโดยไม่ต้องหยุดทำงาน
คุณทำการเปลี่ยนแปลง schema กับฐานข้อมูลจริงโดยไม่ต้องหยุดทำงานได้อย่างไร ตัวอย่างเช่นสมมติว่าฉันมีฐานข้อมูล PostgreSQL พร้อมตารางรวมถึงข้อมูลผู้ใช้ที่หลากหลายเช่นที่อยู่อีเมล ฯลฯ ทั้งหมดที่เกี่ยวข้องกับผู้ใช้เฉพาะ หากฉันต้องการย้ายที่อยู่อีเมลไปยังตารางเฉพาะใหม่ฉันต้องเปลี่ยนสคีมาแล้วย้ายข้อมูลอีเมลไปยังตารางใหม่ วิธีนี้สามารถทำได้โดยไม่หยุดเขียนไปยังตารางต้นฉบับ? แน่นอนว่าในขณะที่ข้อมูลถูกเขียนทับจากตารางเก่าไปยังตารางใหม่ข้อมูลใหม่จะถูกเขียนลงในตารางเดิมต่อไปและจะพลาดใช่ไหม ฉันเดาว่าปัญหานี้เกิดขึ้นค่อนข้างบ่อย แต่ฉันไม่สามารถหาวิธีแก้ปัญหามาตรฐานใด ๆ สำหรับจัดการกับมัน บทความนี้เกี่ยวกับปัญหา แต่ฉันไม่เข้าใจขั้นตอนที่ 3 เขาบอกว่าเขียนไปยังทั้งสองตารางจากนั้นย้ายข้อมูลเก่าจากตารางแรกไปยังตารางใหม่ คุณแน่ใจได้อย่างไรว่าคุณเพียงแค่ย้ายข้อมูลเก่าเท่านั้น (ฉันใช้PostgreSQL กับ Heroku )

3
search_path สำหรับฐานข้อมูลและผู้ใช้ที่กำหนดคืออะไร
ฉันสามารถดูปัจจุบันsearch_pathด้วย: show search_path ; และฉันสามารถตั้งค่าsearch_pathสำหรับเซสชันปัจจุบันด้วย: set search_path = "$user", public, postgis; เช่นเดียวกับผมอย่างถาวรสามารถตั้งค่าsearch_pathเพื่อให้ฐานข้อมูลด้วย: alter database mydb set search_path = "$user", public, postgis ; และฉันสามารถตั้งค่าsearch_pathสำหรับบทบาทที่กำหนด(ผู้ใช้) อย่างถาวรด้วย: alter role johnny set search_path = "$user", public, postgis ; แต่ฉันต้องการทราบวิธีการตรวจสอบว่าการตั้งค่าฐานข้อมูลและบทบาทคืออะไร (เกี่ยวกับsearch_path) ก่อนที่จะทำการเปลี่ยนแปลง

2
วิธีดูข้อมูลใน pgAdmin III
ฉันไม่อยากเชื่อเลยว่ามันจะทำให้เรื่องนี้ยาก ฉันกำลังสูญเสียเกี่ยวกับวิธีการดูข้อมูลในฐานข้อมูลของฉัน มีวิธีง่ายๆในการดูว่าข้อมูลใดอยู่ในตารางของฉันด้วย pgAdmin III? อีกวิธีหนึ่งคือมีโปรแกรมที่ฉันสามารถใช้ที่ไม่ดูด?

5
Autovacuum เชิงรุกบน PostgreSQL
ฉันกำลังพยายามให้ PostgreSQL ทำการดูดฐานข้อมูลของฉันโดยอัตโนมัติ ฉันได้กำหนดค่าสูญญากาศอัตโนมัติดังนี้: autovacuum_vacuum_cost_delay = 0 # ปิดสูญญากาศที่ใช้ต้นทุน autovacuum_vacuum_cost_limit = 10,000 # ค่าสูงสุด autovacuum_vacuum_threshold = 50 # ค่าเริ่มต้น autovacuum_vacuum_scale_factor = 0.2 # ค่าเริ่มต้น ฉันสังเกตว่าสูญญากาศอัตโนมัติจะเริ่มขึ้นเฉพาะเมื่อฐานข้อมูลไม่ได้โหลดดังนั้นฉันจึงเข้าสู่สถานการณ์ที่มีสิ่งอันดับที่ตายแล้วมากกว่าสิ่งอันดับสด ดูตัวอย่างภาพหน้าจอที่แนบมา หนึ่งในตารางมี 23 tuples สด แต่ 16845 tuples ตายรอสูญญากาศ นั่นมันบ้า! Auto vacuum kicks เมื่อการทดสอบเสร็จสิ้นและเซิร์ฟเวอร์ฐานข้อมูลไม่ได้ใช้งานซึ่งไม่ใช่สิ่งที่ฉันต้องการเพราะฉันต้องการให้สูญญากาศอัตโนมัติเตะเมื่อใดก็ตามที่จำนวนของ tuples ที่ตายเกินกว่า 20% tuples สด + 50 เนื่องจากฐานข้อมูล การกำหนดค่า สูญญากาศอัตโนมัติเมื่อเซิร์ฟเวอร์ไม่ได้ใช้งานไม่มีประโยชน์สำหรับฉันเนื่องจากเซิร์ฟเวอร์ที่ใช้งานจริงคาดว่าจะมีการอัปเดต 1000 …

3
วิธีการเรียกใช้งานที่เกิดขึ้นซ้ำ ๆ บน Postgresql โดยไม่ต้องใช้เครื่องมือคล้าย cron ภายนอก
ฉันต้องการเรียกขั้นตอนการจัดเก็บเป็นประจำ บน Oracle ฉันจะสร้างงานสำหรับสิ่งนี้ ฉันพบว่า Postgresql สามารถเลียนแบบสิ่งนี้ได้ดีโดยใช้เครื่องมือภายนอก (cron ฯลฯ ) และ PgAgent คุณรู้จักทางเลือก "ภายใน" ซึ่งไม่เกี่ยวข้องกับเครื่องมือภายนอกหรือไม่? ฉันต้องการหลีกเลี่ยงปัญหาด้านความปลอดภัยด้วยรหัสผ่านที่จัดเก็บในบรรทัดคำสั่งของ pgAgent ฉันต้องการหลีกเลี่ยงการกำหนดค่าระบบเพิ่มเติมใด ๆ สำหรับการซ่อนรหัสผ่าน ( ~/.pgpass) Postgresql 8.3 Linux RedHat 64 บิต

3
ทำไมผู้ใช้ใหม่ได้รับอนุญาตให้สร้างตาราง?
ฉันสงสัยว่าทำไมผู้ใช้ที่เพิ่งสร้างใหม่ได้รับอนุญาตให้สร้างตารางหลังจากเชื่อมต่อกับฐานข้อมูล ฉันมีฐานข้อมูลเดียวproject2_core: postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ---------------+--------------+-----------+-------------+-------------+------------------------------- postgres | postgres | SQL_ASCII | C | C | project2_core | atm_project2 | UTF8 | de_DE.UTF-8 | de_DE.UTF-8 | project2=CTc/project2 template0 | postgres | SQL_ASCII | C | C …

5
กรณีการใช้งานที่ถูกต้องสำหรับการใช้ TIMESTAMP โดยไม่มี TIME ZONE คืออะไร?
มีคำตอบยาวและค่อนข้างชัดเจนเกี่ยวกับความแตกต่างระหว่าง TIMESTAMP WITH TIME ZONE -vs- TIMESTAMP WITHOUT TIME ZONE มีอยู่ในโพสต์ SOนี้ สิ่งที่ฉันต้องการทราบคือมีกรณีการใช้งานที่ถูกต้องสำหรับการใช้งานจริงTIMESTAMP WITHOUT TIME ZONEหรือควรได้รับการพิจารณาว่าเป็นรูปแบบการต่อต้าน
40 postgresql 

3
วิธีการใช้ UPSERT ใน PostgreSQL
ฉันได้อ่านเกี่ยวกับUPSERTการใช้งานที่แตกต่างกันใน PostgreSQL แต่โซลูชันเหล่านี้ทั้งหมดค่อนข้างเก่าหรือค่อนข้างแปลกใหม่ (โดยใช้CTE ที่เขียนได้ ) และฉันก็ไม่ใช่ผู้เชี่ยวชาญ psql เลยที่จะรู้ได้ทันทีว่าโซลูชันเหล่านี้เก่าหรือไม่เพราะพวกเขาได้รับการแนะนำอย่างดีหรือพวกเขา (ดีเกือบทั้งหมดเป็น) เพียงตัวอย่างของเล่นที่ไม่เหมาะสมกับการใช้งานจริง อะไรคือวิธีที่ปลอดภัยที่สุดในการใช้ UPSERT ใน PostgreSQL

4
วิธีที่ดีที่สุดในการจัดเก็บที่อยู่อีเมลใน PostgreSQL คืออะไร
ประเภทข้อมูลที่เหมาะสมในการจัดเก็บที่อยู่อีเมลใน PostgreSQL คืออะไร ฉันสามารถใช้varchar(หรือแม้กระทั่งtext) แต่ฉันสงสัยว่ามีประเภทข้อมูลเฉพาะสำหรับอีเมล

5
วิธีแสดงรายการมุมมองทั้งหมดใน SQL ใน PostgreSQL
ฉันจะแสดงรายการมุมมองทั้งหมดสำหรับฐานข้อมูลโดยใช้คำสั่ง SQL ใน PostgreSQL ได้อย่างไร ฉันต้องการบางสิ่งที่คล้ายกับเอาต์พุตของ\dvคำสั่งpsql แต่ควรเป็นเพียงแค่รายการของชื่อมุมมอง เช่น, SELECT ...; my_view_1 my_view_2 my_view_3 ฉันใช้ PostgreSQL v9.1.4 บน Ubuntu Linux

2
การเพิ่ม work_mem และ shared_buffers บน Postgres 9.2 ทำให้การสืบค้นช้าลงอย่างมาก
ฉันมีอินสแตนซ์ PostgreSQL 9.2 ที่ทำงานบน RHEL 6.3, เครื่อง 8-core พร้อม RAM ขนาด 16GB เซิร์ฟเวอร์ทุ่มเทให้กับฐานข้อมูลนี้ เนื่องจาก postgresql.conf เริ่มต้นค่อนข้างอนุรักษ์นิยมเกี่ยวกับการตั้งค่าหน่วยความจำฉันคิดว่าอาจเป็นความคิดที่ดีที่จะอนุญาตให้ Postgres ใช้หน่วยความจำเพิ่มเติม เพื่อประหลาดใจของฉันคำแนะนำต่อไปนี้ในwiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Serverชะลอตัวลงอย่างมากในทางปฏิบัติทุกแบบสอบถามที่ฉันเรียกใช้ ฉันยังลองใช้ pgtune ซึ่งให้คำแนะนำต่อไปนี้พร้อมปรับพารามิเตอร์เพิ่มเติม แต่นั่นก็ไม่ได้เปลี่ยนแปลงอะไรเลย มันแสดงให้เห็น shared_buffers ขนาด 1/4 ของ RAM ซึ่งดูเหมือนจะสอดคล้องกับคำแนะนำที่อื่น (และโดยเฉพาะกับ PG wiki โดยเฉพาะ) default_statistics_target = 50 maintenance_work_mem = 960MB constraint_exclusion = on checkpoint_completion_target = 0.9 effective_cache_size = 11GB work_mem …

2
การกำหนดค่า PostgreSQL สำหรับประสิทธิภาพการอ่าน
ระบบของเราเขียนข้อมูลจำนวนมาก (ระบบ Big Data) ประสิทธิภาพการเขียนดีพอสำหรับความต้องการของเรา แต่ประสิทธิภาพการอ่านช้าเกินไป โครงสร้างคีย์หลัก (ข้อ จำกัด ) มีความคล้ายคลึงกับตารางทั้งหมดของเรา: timestamp(Timestamp) ; index(smallint) ; key(integer). ตารางสามารถมีได้หลายล้านแถวแม้กระทั่งหลายพันล้านแถวและการร้องขอการอ่านมักจะเป็นช่วงเวลาที่ระบุ (การประทับเวลา / ดัชนี) และแท็ก เป็นเรื่องปกติที่มีข้อความค้นหาที่ส่งกลับประมาณ 200k บรรทัด ขณะนี้เราสามารถอ่านประมาณ 15k บรรทัดต่อวินาที แต่เราต้องเร็วขึ้น 10 เท่า เป็นไปได้และถ้าเป็นเช่นนั้นได้อย่างไร หมายเหตุ: PostgreSQL นั้นมาพร้อมกับซอฟต์แวร์ของเราดังนั้นฮาร์ดแวร์จึงแตกต่างจากไคลเอนต์หนึ่งไปอีกไคลเอนต์หนึ่ง มันเป็น VM ที่ใช้สำหรับการทดสอบ โฮสต์ของ VM คือ Windows Server 2008 R2 x64 พร้อม RAM 24.0 GB ข้อมูลจำเพาะเซิร์ฟเวอร์ …

2
ข้อผิดพลาด: ไม่ได้เลือกสคีมาที่จะสร้าง
ฉันกำลังทำงานกับฐานข้อมูล postgresql ของ amazon RDS ที่ฉันรู้ว่ามีปัญหากับสคีมาสาธารณะ (อาจถูกทิ้ง) แต่เห็นได้ชัดว่าสคีมามีอยู่แล้วและปัญหายังไม่ได้รับการแก้ไข นี่คือตัวอย่างเซสชันที่มีฐานข้อมูลเปล่าที่สร้างขึ้นใหม่: mydb=> CREATE TABLE distributors ( mydb(> did integer, mydb(> name varchar(40) UNIQUE mydb(> ); ERROR: no schema has been selected to create in mydb=> show search_path; search_path ---------------- "$user",public (1 row) mydb=> create schema public; ERROR: schema "public" already exists คำใบ้ใด …

3
VACUUM ANALYZE ปกติยังคงแนะนำภายใต้ 9.1 หรือไม่
ฉันใช้ PostgreSQL 9.1 บน Ubuntu VACUUM ANALYZEยังมีกำหนดการแนะนำหรือมีระบบตอบโต้อัตโนมัติเพียงพอที่จะดูแลทุกความต้องการได้หรือไม่? หากคำตอบคือ "มันขึ้นอยู่กับ" แล้ว: ฉันมีฐานข้อมูลขนาดใหญ่ (ขนาดการถ่ายโอนข้อมูลบีบอัด 30 GiB, ไดเรกทอรีข้อมูล 200 GiB) ฉันทำ ETL ลงในฐานข้อมูลนำเข้าใกล้ 3 ล้านแถวต่อสัปดาห์ ตารางที่มีการเปลี่ยนแปลงบ่อยที่สุดนั้นสืบทอดมาจากตารางต้นแบบโดยไม่มีข้อมูลในตารางต้นแบบ (ข้อมูลถูกแบ่งพาร์ติชันเป็นรายสัปดาห์) ฉันสร้างการเปิดตัวรายชั่วโมงและจากที่นั่นรายงานรายวันรายสัปดาห์และรายเดือน ฉันถามเพราะกำหนดVACUUM ANALYZEส่งผลกระทบต่อการรายงานของฉัน มันใช้เวลานานกว่า 5 ชั่วโมงและฉันต้องฆ่ามันสองครั้งในสัปดาห์นี้เพราะมันส่งผลกระทบต่อการนำเข้าฐานข้อมูลปกติ check_postgresไม่ได้รายงานการขยายตัวที่สำคัญในฐานข้อมูลดังนั้นจึงไม่ใช่ปัญหา จากเอกสาร, autovacuum ควรดูแล ID ธุรกรรมที่มีการห่อหุ้มด้วย คำถามที่ยืน: ฉันยังคงต้องVACUUM ANALYZE?
38 postgresql  etl  vacuum 

6
วิธีสร้างตารางชั่วคราวโดยใช้ VALUES ใน PostgreSQL
ฉันกำลังเรียนรู้ PostgreSQL และพยายามหาวิธีสร้างตารางชั่วคราวหรือWITHประกาศที่สามารถใช้แทนตารางปกติเพื่อจุดประสงค์ในการดีบั๊ก ฉันดูเอกสารสำหรับCREATE TABLEและมันบอกว่าVALUESสามารถใช้เป็นแบบสอบถาม แต่ไม่ได้ยกตัวอย่าง เอกสารสำหรับVALUESส่วนเชื่อมโยงนั้นไม่มีตัวอย่างหรือไม่? ดังนั้นฉันจึงเขียนแบบทดสอบง่ายๆดังนี้: DROP TABLE IF EXISTS lookup; CREATE TEMP TABLE lookup ( key integer, val numeric ) AS VALUES (0,-99999), (1,100); แต่ PostgreSQL (9.3) กำลังบ่นเกี่ยวกับ ข้อผิดพลาดทางไวยากรณ์ที่หรือใกล้ "AS" คำถามของฉันคือ: ฉันจะแก้ไขข้อความข้างต้นได้อย่างไร ฉันจะสามารถปรับตัวเข้ากับมันเพื่อนำมาใช้ในWITH block? ขอบคุณล่วงหน้า.

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