ผู้ดูแลฐานข้อมูล

ถามตอบสำหรับผู้เชี่ยวชาญด้านฐานข้อมูลที่ต้องการพัฒนาทักษะฐานข้อมูลและเรียนรู้จากผู้อื่นในชุมชน

4
แสดงรายการคีย์หลักสำหรับตารางทั้งหมด - Postgresql
มีคำถามที่จะทำเช่นนั้น? ฉันพบข้อสงสัยบางอย่างที่สามารถทำได้สำหรับหนึ่งตาราง แต่ฉันไม่สามารถแก้ไขได้ดังนั้นฉันจึงเห็น: tablename | column | type

3
วิธีแปลง mysql เป็น postgresql [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Exchange Administrators Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันกำลังมองหาเครื่องมือการแปลงเพื่อแปลงฐานข้อมูล mysql ขนาดใหญ่เป็น postgresql ฉันต้องการเครื่องมือ / สคริปต์เพื่อเป็น: ฟรี ทำงานภายใต้ Linux ใช้งานง่ายและไม่บั๊ก คุณลองและยืนยันว่าใช้งานได้จริง เด่นกว่าไม่ได้เขียนด้วย Java หรือ Ruby ฉันได้ลองใช้เครื่องมือต่าง ๆ ที่ระบุไว้ที่นี่แต่ไม่มีใครทำงานให้ฉันได้ ขอบคุณล่วงหน้า.

2
การจำลองแบบสตรีมมิ่งและความล้มเหลวบน PostgreSQL
ฉันกำลังพิสูจน์แนวคิดเกี่ยวกับการจำลองแบบ PostgreSQL หลังจากการอภิปรายในฟอรัมเราตัดสินใจที่จะไปกับการจำลองแบบสตรีมมิ่งเนื่องจากประสิทธิภาพดีเมื่อเทียบกับโซลูชันอื่น ๆ PostgreSQL ไม่ได้ให้การเฟลโอเวอร์อัตโนมัติสำหรับการจำลองแบบการสตรีม เราสามารถเปลี่ยนทาสให้เป็นมาสเตอร์โดยใช้ไฟล์ทริกเกอร์ แต่มันไม่สามารถจัดการได้ ดังนั้นฉันจึงต้องการโซลูชันที่มี failover อัตโนมัติและมีความพร้อมใช้งานสูง มีโซลูชั่นที่แตกต่างกัน: Repmgr Linux Heartbeat Pgpool-II (สำหรับการ failover อัตโนมัติเท่านั้น) เครื่องมืออื่น ๆ ในกรณีที่คุณใช้ คำถามของฉันคือวิธีแก้ปัญหาที่ควรใช้?

3
สคริปท์ Oracle DDL ในรูปแบบอัตโนมัติ
นักพัฒนา Oracle SQL สามารถส่งออก DDL ผ่านทางTools -> Database Export...นี้ทำงานได้ดีมาก แต่ต้องการการแทรกแซงด้วยตนเอง ฉันรู้DBMS_METADATA.get_ddl()แต่พบว่าการส่งออกไม่สมบูรณ์ ฉันพบปัญหาที่DBMS_METADATADDL ที่ส่งออกไม่สามารถใช้งานได้โดยไม่ต้องแก้ไขปัญหาเช่นแบ่งในช่วงกลางของคำหลักและแย่กว่านั้น อย่างไรก็ตามหากใครรู้วิธีการส่งออก DDL ผ่านDMBS_METADATAสิ่งที่สามารถทำงานได้โดยไม่ต้องแก้ไขด้วยตนเองนั่นก็เป็นทางออกที่ดีเช่นกัน โดยทั่วไปฉันกำลังมองหาวิธีอัตโนมัติ / สคริปต์เพื่อส่งออก DDL เหมือนกับสิ่งที่ส่งออกผ่านทางคู่มือ ฉันจะทำสิ่งนั้นได้อย่างไร

2
วิธีที่ดีที่สุดในการสร้างการติดตั้งการจำลองแบบ MySQL Master-Slave และแก้ไขปัญหาคืออะไร
ฉันยังใหม่กับการจัดการฐานข้อมูล ฉันประสบปัญหามากมายในขณะตั้งค่าการจำลองแบบ master-slave ของ mysql ฉันยังประสบปัญหาการแก้ไขปัญหาการจำลองแบบ mysql ปกติ ใครช่วยได้เข้าใจว่าฉันควรจัดการกับสิ่งเหล่านี้อย่างไร

2
ทำธุรกรรม SQL โดยใช้ WITH ใน CREATE VIEW
ฉันต้องการสร้างการดูด้วยการใช้คำสั่ง แต่ไม่พบการอ้างอิงเกี่ยวกับไวยากรณ์ที่ถูกต้องจริงๆ ฉันอยากได้แบบนี้ WITH TempTbl AS (SELECT ...) CREATE VIEW SomeView SELECT * FROM TempTbl และไวยากรณ์ที่ถูกต้องสำหรับการใช้หลายกับคำสั่งคืออะไร? ไม่มีประโยชน์ใน MSDN :(
14 t-sql  view 

2
OracleBulkCopy ทำอะไรเป็นพิเศษโดยเฉพาะและฉันจะเพิ่มประสิทธิภาพได้อย่างไร
ในการสรุปข้อมูลเฉพาะ: เราจำเป็นต้องทำขั้นตอนประมาณ 5 ล้านแถวในฐานข้อมูลผู้จำหน่าย (Oracle) ทุกอย่างทำงานได้อย่างยอดเยี่ยมสำหรับแถวที่มีขนาด 500k โดยใช้OracleBulkCopy(ODP.NET) แต่เมื่อเราพยายามที่จะขยายขนาดสูงสุด 5M ประสิทธิภาพการทำงานจะเริ่มช้าลงเมื่อทำการรวบรวมข้อมูลเมื่อมันมาถึงเครื่องหมาย 1M จะช้าลงเรื่อย ๆ เมื่อโหลดแถวมากขึ้น หมดเวลาหลังจาก 3 ชั่วโมงหรือมากกว่านั้น ฉันสงสัยว่ามันเกี่ยวข้องกับคีย์หลักบนโต๊ะ แต่ฉันได้สืบค้นฟอรัม Oracle และ Stack Overflow เพื่อดูข้อมูลและสิ่งที่ฉันอ่านขัดแย้งมาก (เช่นกันโพสต์จำนวนมากดูเหมือนจะขัดแย้งกัน ) . ฉันหวังว่าใครบางคนสามารถตั้งค่าการบันทึกตรงคำถามที่เกี่ยวข้องอย่างใกล้ชิดเกี่ยวกับกระบวนการ: ที่ไม่OracleBulkCopyระดับธรรมดาหรือใช้โดยตรงเส้นทางโหลด? มีวิธีที่ฉันสามารถยืนยันสิ่งนี้ไม่ทางใดก็ทางหนึ่งได้หรือไม่? สมมติว่ามันไม่ใช้โดยตรงเส้นทางโหลด: มันเป็นความจริงว่า Oracle จะตั้งค่าดัชนีทั้งหมดจะใช้ไม่ได้ในระหว่างการโหลดและทำให้พวกเขากลับมาออนไลน์หลังจากนั้น? ฉันได้อ่านแถลงการณ์หลายฉบับเกี่ยวกับเอฟเฟกต์นี้ แต่ไม่สามารถยืนยันได้อีก ถ้า # 2 เป็นจริงแล้วมันควรสร้างความแตกต่างใด ๆ ที่ดัชนีอยู่บนตารางก่อนที่ฉันจะเริ่มต้นการดำเนินการคัดลอกจำนวนมาก? ถ้าเป็นเช่นนั้นทำไม เกี่ยวข้องกับ # 3 มีความแตกต่างในทางปฏิบัติโดยทั่วไประหว่างการโหลดจำนวนมากกับดัชนีที่ใช้ไม่ได้กับการลดลงดัชนีจริงก่อนที่จะโหลดและสร้างใหม่ในภายหลังหรือไม่ หาก # …
14 oracle  bulk 

4
หนึ่งฐานข้อมูลขนาดใหญ่เทียบกับคนที่เล็กกว่าหลายคน
เรามีสถานการณ์คือเราสามารถ (A) ปรับใช้อินสแตนซ์ของแอปพลิเคชันในฐานข้อมูล MySQL หนึ่งรายการโดยใช้คำนำหน้าตารางหรือ (B) ใช้ฐานข้อมูล MySQL ที่แตกต่างกันสำหรับแต่ละอินสแตนซ์ของแอปพลิเคชันเช่น ตั้งค่า "A": central_database app1_table1 app1_table2 app1_tablen ... appn_table1 appn_table2 appn_tablen ผลลัพธ์ที่ได้คือฐานข้อมูลขนาดใหญ่ที่มีตารางจำนวนมาก ตั้งค่า "B": app1_db table1 table2 tablen ... appn_db table1 table2 tablen ผลลัพธ์ที่ได้คือฐานข้อมูลจำนวนมากที่มีบางตาราง ทุกสิ่งเท่าเทียมกัน (เช่นจำนวนข้อมูลจำนวนอินสแตนซ์ของแอป ฯลฯ ) ข้อดีและข้อเสียของการใช้วิธีการอย่างใดอย่างหนึ่งคืออะไร อะไรจะเป็นอันตรายต่อประสิทธิภาพของฐานข้อมูลและการบำรุงรักษา แอปพลิเคชั่นนี้ใช้ PHP 5 รันบน Apache 2.x และเราใช้ MySQL 5.x ขอบคุณมากสำหรับเวลาและความคิดของคุณ!

4
ฉันควรลงทุนเวลาเปลี่ยนประเภทคอลัมน์จาก CHAR (36) เป็น UUID หรือไม่
ฉันมีไม่กี่ล้านแถวในฐานข้อมูลของฉันแล้ว ฉันไม่รู้เกี่ยวกับชนิดข้อมูล PostgreSQL UUID เมื่อฉันออกแบบสคีมาของฉัน หนึ่งในตารางมีแถว 16M (ประมาณ 3.5M ถึง 4 M ระเบียนต่อชาร์ด) เติบโตที่ประมาณ 500K ระเบียนต่อวัน ฉันยังคงมีความหรูหราในการทำให้ระบบการผลิตหยุดลงหากต้องการ ฉันจะไม่มีความหรูหรานี้ในหนึ่งหรือสองสัปดาห์ คำถามของฉันคือมันจะคุ้มค่าที่จะทำเช่นนั้น? ฉันสงสัยเกี่ยวกับประสิทธิภาพของ JOIN การใช้พื้นที่ดิสก์ (การถ่ายโอนข้อมูลแบบเต็ม gzip คือ 1.25 GiB) สิ่งต่าง ๆ ในลักษณะนั้น สคีมาของตารางคือ: # \d twitter_interactions Table "public.twitter_interactions" Column | Type | Modifiers -------------------------+-----------------------------+----------- interaction_id | character(36) | not null status_text | …
14 postgresql 

3
“ ข้อความค้นหาต่างกัน” คืออะไร
ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้เกี่ยวกับแบบสอบถาม SQL ที่ฉันใช้ในโปรแกรม SQL Server 2005 T-SQL แบบสอบถามที่ต่างกันกำหนดให้มีการตั้งค่าANSI_NULLSและANSI_WARNINGSตัวเลือกสำหรับการเชื่อมต่อ สิ่งนี้ช่วยให้มั่นใจว่าความหมายของแบบสอบถามที่สอดคล้องกัน เปิดใช้งานตัวเลือกเหล่านี้แล้วออกแบบสอบถามของคุณอีกครั้ง (ความรุนแรง 16) การแก้ไขมันเป็นเรื่องง่ายตั้งค่าANSI_NULLSและANSI_WARNINGS ONแต่ฉันต้องการที่จะรู้ว่าแบบสอบถามที่แตกต่างกันคืออะไร การค้นหาของ Google แสดงผลลัพธ์หลายสิบรายการที่บอกให้ฉันตั้งค่าANSI_NULLSและANSI_WARNINGSไม่มีอะไรอธิบายว่าคำนั้นหมายถึงอะไร แบบสอบถามคือ: UPDATE SRV.DB.DBO.TABLE SET Column= (SELECT Column FROM SRV1.DB.DBO.TABLE) ฉันคิดว่านี่เป็นเพราะการเชื่อมต่อกับเอ็นจิ้นฐานข้อมูลหลายอันในเคียวรีเดียวเนื่องจากฉันไม่เคยได้รับข้อผิดพลาดนี้เลย "Heterogeneous" อ้างถึงการสืบค้นเอนจินฐานข้อมูลสองตัวในบริบทนี้หรือไม่?

3
การทดสอบความสามารถในการปรับขนาดของกระบวนงานที่เก็บไว้
ฉันมีแอปพลิเคชันอีเมลที่จะถูกส่งต่อไปยัง UI จำนวนข้อความใหม่สำหรับผู้ใช้ที่ระบุในการโหลดหน้าเว็บแต่ละหน้า ฉันมีหลายรูปแบบของสิ่งที่ฉันกำลังทดสอบในระดับ DB แต่ทั้งหมดจะถูกสรุปโดยการเรียก proc ที่เก็บไว้ ฉันพยายามกดฐานข้อมูลเพื่อดูว่าจุดแตกหัก (# ของคำขอต่อวินาที) จะเป็นอย่างไร โดยสรุปฉันมีตารางเช่น userId นี้ newMsgCount พร้อมกับดัชนีคลัสเตอร์บน userId SQL ควรสามารถตอบสนองต่อเซิร์ฟเวอร์เหล่านี้หลายร้อยหรือหลายพันต่อวินาที ฉันคิดว่าคนเกียจคร้านเป็นแอป. NET ของฉัน ฉันจะทำให้การทดสอบนี้เป็นผลการทดสอบที่ดีโดยใช้ประสิทธิภาพของ SQL ได้อย่างไร มีเครื่องมือสำหรับสิ่งนี้ที่ฉันสามารถให้ชื่อ proc ที่เก็บไว้และ param เพื่อให้ pund DB ของฉันหรือไม่ ฉันต้องการดูว่า DB สามารถส่งคืนนาทีได้หรือไม่ จาก 250 คำตอบต่อวินาที

3
เหตุใด SSMS จึงแทรกแถวใหม่ที่ด้านบนของตารางไม่ใช่ด้านล่าง
เมื่อใดก็ตามที่ฉันแทรกแถวลงในตารางด้วยตนเองใน SQL Server Management Studio 2008 (ฐานข้อมูลคือ SQL Server 2005) แถวใหม่ของฉันจะปรากฏที่ด้านบนของรายการมากกว่าด้านล่าง ฉันใช้คอลัมน์ข้อมูลประจำตัวและผลลัพธ์เช่นนี้ id row 42 first row 1 second row 2 third row เมื่อแถวถูกดึงออกมาและไม่ได้เรียงลำดับอย่างชัดเจน สิ่งนี้ส่งผลให้มีลักษณะที่แตกต่างเมื่อดึงแถวสำหรับเว็บแอปและเปลี่ยนสิ่งที่TOP 1แบบสอบถามส่งกลับ ฉันรู้ว่าฉันทำได้order byแต่ทำไมสิ่งนี้จึงเกิดขึ้น ข้อมูลส่วนใหญ่ของฉันถูกแทรกผ่านเว็บแอปพลิเคชันการแทรกทั้งหมดจากแอปพลิเคชันนี้ทำให้การสั่งซื้อครั้งแรกในครั้งแรกเช่นการแทรกครั้งล่าสุดอยู่ที่ด้านล่างดังนั้นรหัสทั้งหมดอยู่ในแถว มีการตั้งค่าบางอย่างในเซิร์ฟเวอร์หรือ Studio จัดการที่เป็นสาเหตุของการสั่งซื้อที่ไม่เหมาะสมนี้หรือไม่?

5
เซิร์ฟเวอร์ MySQL หายไปจากการขัดขวางการนำเข้าของทิ้งขนาดใหญ่
ฉันพยายามนำเข้า sql dump ขนาดใหญ่ (2GB) ไปยัง mysql ในเครื่องของฉันบน mac ฉันสามารถทำสิ่งนี้ได้ในอดีต (ฉันใช้ MAMP) แต่ตอนนี้ฉันได้รับ ERROR 2006 (HY000) ที่บรรทัด 7758: เซิร์ฟเวอร์ MySQL หายไปทุกครั้งที่ฉันพยายามนำเข้าดัมพ์ ฐานข้อมูลมีตาราง innodb ฉันพยายามคัดลอกไฟล์ my-innodb-heavy-4G.cnf ไปยัง my.cnf ของฉันเพื่อดูว่าการตั้งค่าเหล่านั้นจะช่วยได้หรือไม่ แต่โชคไม่ดี ความคิดใด ๆ เกี่ยวกับสิ่งที่จะปรับแต่ง? ฉันใช้ "Mac OS X เวอร์ชั่น 10.6 (x86, 64- บิต), DMG Archive" จากที่นี่: http://dev.mysql.com/downloads/mysql/
14 mysql  innodb  dump  mac-os-x 

4
มีเครื่องมืออะไรบ้างในการสร้างข้อมูลทดสอบสำหรับ SQL Server
ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ อย่างที่คุณเห็นจากคำถามอื่นของฉันการสร้างข้อมูลทดสอบเป็นธีมของฉันในตอนนี้ ณ จุดนี้ฉันยังคงสร้างข้อมูลทดสอบด้วยมือ อย่างไรก็ตามกระบวนการนี้จะสร้างข้อมูลจำนวนเล็กน้อยเสมอ (โดยปกติจะเป็นแถวสิบห้าแถว) เนื่องจากเป็นกระบวนการที่ทำด้วยตนเอง มีเครื่องมือใดที่ทำให้กระบวนการนี้เป็นอัตโนมัติหรือไม่ โดยเฉพาะฉันต้องการสร้างแถว 1mil +

3
MySQL table_cache และ Opened_tables
ฉันเคยเห็นคนใช้การเปรียบเทียบของ Open_tables และ Opened_tables เพื่อประเมินว่า table_cache มีขนาดเล็กเกินไปใน MySQL อย่างไรก็ตามฉันเชื่อว่า Opened_tables สะสมตลอดเวลาดังนั้นนี่จึงไม่ใช่การเปรียบเทียบที่ถูกต้อง ข้อแม้เพียงข้อเดียวที่บางที Opened_tables อาจชนกับการพลาดเท่านั้น - ถึงแม้ว่าถ้าตารางที่เปิดต่อวินาทียังคงมีขนาดเล็กก็อาจไม่เป็นปัญหาสำหรับมันที่จะค่อยๆเติบโต หากเปรียบเทียบ Open_tables กับ Opened_tables ไม่ถูกต้องมีวิธีอื่นในการรับข้อมูลที่วัดได้จากสิ่งนี้หรือไม่? นี่คือ MySQL 5.0 แต่ยินดีต้อนรับความแตกต่างระหว่างเวอร์ชันด้วย

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