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

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

2
การเลือกหลายคอลัมน์ผ่านแบบสอบถามย่อย
ฉันพยายามเลือกคอลัมน์ 2 จากแบบสอบถามย่อยในแบบสอบถามต่อไปนี้ แต่ไม่สามารถทำได้ พยายามสร้างตารางนามแฝง แต่ยังไม่สามารถหาได้ SELECT DISTINCT petid, userid, (SELECT MAX(comDate) FROM comments WHERE petid=pet.id) AS lastComDate, (SELECT userid FROM comments WHERE petid=pet.id ORDER BY id DESC LIMIT 1) AS lastPosterID FROM pet LEFT JOIN comments ON pet.id = comments.petid WHERE userid='ABC' AND deviceID!='ABC' AND comDate>=DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 2 MONTH); …

1
โซลูชันฐานข้อมูลเก็บถาวร
ในการต่อเนื่องกับคำถามที่โพสต์โดยฉันบนมันเป็นความคิดที่ดีที่จะย้ายตารางปริมาณสูงและเข้าถึงอย่างสูงไปยังฐานข้อมูลแยกต่างหากหรือไม่ กำลังมองหาเทคนิค / โซลูชันที่แตกต่างกันสำหรับการเก็บฐานข้อมูลใน PostgreSQL วิธีแก้ปัญหาเล็กน้อยที่ฉันนึกได้คือ: การแบ่งตาราง คั่นพื้นที่ตารางและ / หรือสคีมา การย้ายระเบียน / ตารางที่เก็บถาวรไปยังฮาร์ดดิสก์อื่น คำแนะนำ / คำแนะนำ / คำแนะนำอื่น ๆ ยินดีต้อนรับและชื่นชมจริงๆ หมายเหตุ:เรากำลังเรียกใช้ PostgreSQL v9.1.3 บน CentOS5.2

1
การสำรองข้อมูล shadow volume ของไฟล์ mdf และ ldf ปลอดภัยหรือไม่?
เรากำลังมองหาการแทนที่การสำรองข้อมูลเซิร์ฟเวอร์ SQL แบบดั้งเดิมด้วยการสำรองข้อมูลตาม VSS ของไฟล์ mdf และ ldf ในฐานะที่เป็นคนดีบีฉันค่อนข้างกระวนกระวายใจเกี่ยวกับเรื่องนี้ แต่ฉันก็ยังหาหลักฐานไม่ได้ว่าสิ่งนี้จะไม่ทำงานใช่ไหม ทุกคนสามารถแนะนำการทดลองใช้ที่ฉันสามารถตั้งค่าที่จะแสดงให้เห็นว่าเราสามารถทำธุรกรรมด้วยกลยุทธ์นี้ได้ที่ไหน [การดึงสายไฟออกระหว่างการทำธุรกรรมที่ใช้เวลานานเป็นเรื่องปกติ] ระบบที่เรากำลังดูสร้างสแนปชอตเริ่มต้นของไฟล์ mdf และ ldf จากนั้นคัดลอกข้ามการเปลี่ยนแปลง ฉันไม่สามารถจินตนาการถึงสถานการณ์ที่อาจทำให้เราล้มเหลว หวังว่าคุณสามารถช่วยฉันโน้มน้าวเจ้านายของฉันได้ว่าเราต้องสำรองข้อมูลแบบเดิมเอาไว้!
18 sql-server 

2
เป็นไปได้ไหมที่จะเพิ่มประสิทธิภาพให้มากขึ้นหรือทุกเวลาที่ต้องการ?
เนื่องจากเครื่องมือเพิ่มประสิทธิภาพไม่สามารถใช้เวลาทั้งหมดได้ตามต้องการ (ต้องลดเวลาการดำเนินการให้สั้นลงและไม่สนับสนุน) เพื่อสำรวจแผนปฏิบัติการที่เป็นไปได้ทั้งหมดซึ่งบางครั้งอาจถูกตัดออก ฉันสงสัยว่าสิ่งนี้สามารถถูกแทนที่ได้หรือไม่เพื่อที่คุณจะสามารถให้เครื่องมือเพิ่มประสิทธิภาพตลอดเวลาที่ต้องการ (หรือจำนวนมิลลิวินาทีที่แน่นอน) ฉันไม่จำเป็นต้องใช้ (atm) นี้ แต่ฉันสามารถจินตนาการถึงสถานการณ์ที่มีการดำเนินการค้นหาที่ซับซ้อนในลูปและคุณต้องการแผนการที่เหมาะสมและแคชก่อนมือ แน่นอนว่าคุณมีการวนรอบที่แน่นหนาคุณควรเขียนแบบสอบถามใหม่เพื่อให้มันหายไป แต่ทนกับฉัน นี่เป็นคำถามที่เกิดจากความอยากรู้อยากเห็นมากขึ้นและเพื่อดูว่าบางครั้งมีความแตกต่างระหว่างการปรับให้เหมาะสมแบบลัดและแบบเต็ม ปรากฎว่าคุณสามารถเพิ่มประสิทธิภาพให้กับเวลามากขึ้นด้วยการตั้งค่าสถานะการสืบค้นกลับ 2301 ไม่ใช่สิ่งที่ฉันขอ แต่มันใกล้เข้ามา ข้อมูลที่ดีที่สุดที่ฉันพบในที่นี้คือในQuery Processor Modelling Extensions ใน SQL Server 2005 SP1โดย Ian Jose ใช้แฟล็กการติดตามนี้ด้วยความระมัดระวัง! แต่มันจะมีประโยชน์เมื่อคิดแผนที่ดีกว่า ดูสิ่งนี้ด้วย: บทความที่ติดแท็ก"ระดับการเพิ่มประสิทธิภาพ"โดย Grant Fritchey ก่อนที่คุณจะอัพเกรดเป็น SQL Server 2008 ...โดย Brent Ozar ตัวเลือกการปรับแต่งสำหรับ SQL Server เมื่อทำงานในปริมาณงานที่มีประสิทธิภาพสูงโดยฝ่ายสนับสนุนของ Microsoft ฉันกำลังคิดเกี่ยวกับข้อความค้นหาที่มีการเข้าร่วมจำนวนมากซึ่งพื้นที่โซลูชันสำหรับการเข้าร่วมคำสั่งซื้อจะเพิ่มขึ้นแบบทวีคูณ ฮิวริสติกที่ SQL Server ใช้นั้นค่อนข้างดี …

2
การย้ายจาก SQL 2005 [SQL_Latin1_General_CP1_CI_AS] เป็น 2008 - ฉันจะสูญเสียคุณสมบัติใด ๆ โดยใช้ 'ความเข้ากันได้ย้อนหลัง' หรือไม่
เรากำลังย้ายจาก SQL 2005 [อินสแตนซ์และฐานข้อมูลมีการเปรียบเทียบSQL_Latin1_General_CP1_CI_AS] เป็น SQL 2008 [ซึ่งเป็นค่าเริ่มต้นไปยังLatin1_General_CI_AS] ฉันเสร็จสิ้นการติดตั้ง SQL 2008 R2 และใช้การLatin1_General_CI_ASเปรียบเทียบค่าเริ่มต้นแล้วโดยที่การคืนค่าฐานข้อมูลยังคงเปิดอยู่SQL_Latin1_General_CP1_CI_ASเปรียบเทียบกับการฟื้นฟูของฐานข้อมูลที่ยังคงอยู่ในปัญหาที่ยกเว้นเกิดขึ้น - ตาราง #temp ซึ่งใน Latin1_General_CI_ASขณะที่ฐานข้อมูลอยู่ SQL_Latin1_General_CP1_CI_ASและนี่คือที่ฉันอยู่ตอนนี้ - ฉันต้องการคำแนะนำเกี่ยวกับข้อผิดพลาดตอนนี้โปรด ในการติดตั้ง SQL 2008 R2 ฉันมีตัวเลือกในการติดตั้งให้ใช้โดย'SQL Collation, used for backwards compatibility'ที่ฉันมีตัวเลือกให้เลือกการเรียงหน้าเดียวกันกับฐานข้อมูลปี 2005:SQL_Latin1_General_CP1_CI_AS2005: สิ่งนี้จะทำให้ฉันไม่มีปัญหากับ #temp tables แต่มีข้อผิดพลาดหรือไม่? ฉันจะสูญเสียฟังก์ชันการทำงานหรือคุณลักษณะใด ๆ โดยไม่ใช้การจัดเรียง "ปัจจุบัน" ของ SQL 2008 หรือไม่ สิ่งที่เกี่ยวกับเมื่อเราย้าย (เช่นใน 2 ปี) จาก 2008 …


3
วิธีง่ายๆในการตรวจสอบการเชื่อมต่อกับ SQL Server จากไคลเอนต์
สำหรับวัตถุประสงค์ในการแก้ไขปัญหาฉันต้องการตรวจสอบว่าไคลเอ็นต์สามารถเชื่อมต่อกับอินสแตนซ์ของ SQL Server ได้หรือไม่โดยไม่ขึ้นอยู่กับแอปพลิเคชันที่ไม่สามารถเชื่อมต่อกับ SQL Server ได้ มีวิธีที่ง่าย (หมายความว่าไม่ต้องติดตั้งซอฟต์แวร์ของ บริษัท อื่น) เพื่อทำสิ่งนี้โดยใช้เครื่องมือระบบเริ่มต้นของ Windows หรือไม่ บางทีใช้สคริปต์หรือแอปพลิเคชันเครือข่าย

4
ฉันจะสำรองฐานข้อมูล SQL Server ขนาดใหญ่โดยไม่ส่งผลต่อประสิทธิภาพได้อย่างไร
เรามีรายงานคิวรีที่ทำงานช้าหรือหมดเวลาในตอนเช้าและงานเดียวที่ฉันเห็นว่าทำงานซึ่งฉันคิดว่าอาจส่งผลกระทบต่องานนี้คืองานสำรองฐานข้อมูลของเรา ฐานข้อมูลเองมีขนาดประมาณ 300GB และงานสำรองเริ่มต้นที่ 4:30 น. และยังไม่เสร็จจนกว่าจะถึงเวลา 7:00 น. ไวยากรณ์ปัจจุบันของงานสำรองของเราคือ: BACKUP DATABASE [DatabaseName] TO DISK = N'E:\Database Backups\DatabaseName.Bak' WITH INIT, NOUNLOAD, NAME = N'DatabaseName.Bak', NOSKIP, STATS = 10, NOFORMAT E:\ เป็นพาร์ติชันบนเซิร์ฟเวอร์ที่เก็บทั้งฐานข้อมูลและสำรองฐานข้อมูล ควรสังเกตว่านี่เป็นเซิร์ฟเวอร์เสมือนไม่ใช่เซิร์ฟเวอร์แยกต่างหาก เราเริ่มได้รับการร้องเรียนเกี่ยวกับการชะลอตัวในระหว่างกระบวนการสำรองข้อมูลทันทีหลังจากที่เราเปลี่ยนเป็นเซิร์ฟเวอร์เสมือนดังนั้นฉันคิดว่าอาจเกี่ยวข้องกัน มีวิธีการเรียกใช้งานการสำรองข้อมูลนี้จึงไม่ส่งผลกระทบต่อประสิทธิภาพการค้นหาในขณะที่ทำงานอยู่หรือไม่ เรากำลังใช้ SQL Server 2005

1
ฉันจะคืนค่าข้อความธรรมดา postgres. backupes ได้อย่างไร
ฉันส่งออกฐานข้อมูล postgres จาก pgAdmin ในรูปแบบธรรมดาเพราะฉันต้องการค้นหาข้อความฐานข้อมูลทั้งหมด ฉันพยายามกู้คืนฐานข้อมูลกลับ แต่มีข้อผิดพลาดแจ้งว่าไฟล์เก็บถาวรไม่ใช่ไฟล์เก็บถาวรที่ถูกต้อง ฉันจะเรียกคืน db กลับมาได้อย่างไรถ้ามันสามารถกู้คืนได้?

4
mysql จะไม่เริ่มต้นหลังจากเพิ่ม innodb_buffer_pool_size และ innodb_log_file_size
ฉันกำลังติดตามโซลูชันนี้ที่นี่/programming/3927690/howto-clean-a-mysql-innodb-storage-engine/4056261#comment14041132_4056261 ในinnodb_buffer_pool_sizeภายหลังและพยายามเพิ่มเป็น 4G และ 1G ในภายหลัง (เช่น 1024M) นอกจากขนาดไฟล์บันทึกแล้ว แต่ mysql จะไม่ขึ้นต้นด้วยค่าเหล่านั้น ถ้าฉันใส่กลับไปที่ 512M mysql เริ่มต้นได้ดี ฉันจะแก้ปัญหานี้ได้อย่างไร เซิร์ฟเวอร์ของฉันเป็นรุ่น 16GB และเป็นไปตาม Webmin sysinfo: Real memory 15.62 GB total, 3.13 GB used ในขณะเดียวกันฉันก็พบบันทึกข้อผิดพลาดเช่นกัน: 120529 10:29:32 mysqld_safe mysqld จากไฟล์ pid /var/run/mysqld/mysqld.pid สิ้นสุดวันที่ 120529 10:29:33 mysqld_safe การเริ่มต้น mysqld daemon ด้วยฐานข้อมูลจาก / var / lib …

2
ตัวอย่างโมเดลฐานข้อมูลที่พร้อมใช้งาน
ฉันจะหาโมเดลฐานข้อมูลที่พร้อมใช้งานได้จากที่ใด ฉันไม่ต้องการฐานข้อมูลที่มีข้อมูลอยู่ แต่มีเพียงสกีมา (ไดอะแกรม UML) บางทีบางอย่างเช่นแบบจำลองข้อมูลที่ลิงค์นี้แต่มีความซับซ้อนและโลกแห่งความเป็นจริงมากขึ้น

3
High Disk I / O จากเซิร์ฟเวอร์ sql หรือ High disk I / O ทำให้เซิร์ฟเวอร์ sql ช้าลงหรือไม่
ฉันโต้เถียงกับ DBA และพวกฮาร์ดแวร์สองคนเกี่ยวกับปัญหาด้านประสิทธิภาพบนเซิร์ฟเวอร์ SQL ของเรา โดยทั่วไปทุกอย่างเรียบร้อยดี แต่ในช่วงสองสามสัปดาห์ที่ผ่านมาเรามี spikes ล่าช้ามากในเซิร์ฟเวอร์ sql มันชัดเจนว่า SQL Server กำลังรอบนดิสก์ I / O แต่ฉันได้รับการบอกว่าเป็นเพราะ SQL Server จะขอ I / O สูงผิดปกติ ซึ่งไม่ใช่กรณี ฉันสามารถดูได้จากสิ่งที่กำลังทำงานอยู่ซึ่งไม่มีอะไรผิดปกติและ DBA ทุกคนใส่ใจที่จะดูว่าอะไรเป็นสาเหตุของการบล็อกและอื่น ๆ ซึ่งไม่มีประโยชน์ ตัวอย่างเช่นสิ่งสำคัญที่เราเห็นการสำรองข้อมูลคือการทำงานบนฐานข้อมูล ASPState ซึ่งเราใช้เพื่อจัดการสถานะเซสชัน ASP บนเว็บเซิร์ฟเวอร์ ปกติการดำเนินการเหล่านี้จะไม่เคยเห็นในผลลัพธ์ที่ใช้งาน Sp_who2 เนื่องจากเกิดขึ้นอย่างรวดเร็ว ฐานข้อมูลอยู่ในโหมดการกู้คืนอย่างง่ายและการบันทึกเป็นสิ่งผิดปกติ อย่างไรก็ตามในระหว่างความล่าช้าเหล่านี้เราสามารถเห็นการเลือกมากและปรับปรุงการดำเนินงานในฐานข้อมูลที่ถูกบล็อกหรือรอ ฉันแน่ใจว่าสิ่งที่เกิดขึ้นคือบางคนหรืองานบางอย่างกำลังทำงานบางอย่างที่ก่อให้เกิดการใช้งานดิสก์อย่างหนักหน่วงในอาร์เรย์การโจมตีที่ใช้สำหรับบันทึกฐานข้อมูลและไฟล์ข้อมูล ปัญหาคือการพิสูจน์เพราะไม่มีใครต้องการที่จะยอมรับว่าพวกเขากำลังทำสิ่งที่กำลังฆ่าเว็บไซต์ของเรา คำถามของฉันคือตัวนับประสิทธิภาพหรือสิ่งใดที่ฉันสามารถบันทึกได้ซึ่งจะช่วยแสดงว่าเซิร์ฟเวอร์ SQL กำลังรอ I / O แต่ไม่ใช่เพราะการขอมากกว่าปกติ …

4
ใช้ * tables * เป็นพารามิเตอร์ที่กำหนดค่าตาราง (TVP)
MS SQL 2008 รองรับ TVP: คุณลักษณะที่มีประโยชน์สำหรับการอัปโหลดข้อมูลจำนวนมากไปยังกระบวนการดำเนินการที่จัดเก็บไว้เพื่อการประมวลผล แทนที่จะสร้างประเภทที่ผู้ใช้กำหนดสามารถใช้ประโยชน์จากนิยามตารางที่มีอยู่ได้หรือไม่? ตัวอย่างเช่นเป็นไปได้หรือไม่ที่จะสร้างขั้นตอนการจัดเก็บด้วยลายเซ็นต่อไปนี้? CREATE PROCEDURE usp_InsertProductionLocation @TVP **LocationTable** READONLY เอกสารดูเหมือนว่าจะแนะนำว่าเป็นไปไม่ได้ รหัสตัวอย่าง /* Sample code from: http://msdn.microsoft.com/en-us/library/bb510489.aspx */ USE AdventureWorks2008R2; GO /* Create a table type. */ CREATE TYPE LocationTableType AS TABLE ( LocationName VARCHAR(50) , CostRate INT ); GO /* Create a procedure to receive …

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

1
เป็นไปได้หรือไม่ที่จะสร้างนามแฝงหรือคำเหมือนสำหรับฐานข้อมูล
เป็นไปได้หรือไม่ที่จะสร้างนามแฝงฐานข้อมูลหรือคำเหมือน? สิ่งที่ฉันหวังว่าจะสามารถทำได้คือ NewDatabaseName เป็นนามแฝงเป็น OldDatabaseName เพื่อป้องกันไม่ให้ต้องเขียนรหัสเป็นตัน Backstory: ฉันได้รับการติดต่อจากลูกค้าด้วยปัญหาที่เกิดขึ้นด้วยตนเองที่ไร้สาระ พวกเขามีแอปพลิเคชันของบุคคลที่สามที่มีเซิร์ฟเวอร์ SQL ส่วนหลัง ผู้ใช้งานได้เขียนรายงานที่กำหนดเองกับฐานข้อมูลนี้โดยใช้ Visual Basic พร้อมกับข้อมูลการเชื่อมต่อฐานข้อมูลทั้งหมดที่เขียนโค้ดไว้ในโปรแกรมของพวกเขา เมื่อเร็ว ๆ นี้ซอฟต์แวร์ของบุคคลที่สามได้เปลี่ยนชื่อฐานข้อมูล ตอนนี้รายงาน EXE ทั้งหมดล้มเหลว โอ้พวกเขาไม่มีซอร์สโค้ดมากมายเช่นกัน ฉันกลั้นหัวเราะและพูดว่าฉันจะเห็นสิ่งที่ฉันทำได้

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