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

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

3
MongoDB MMAPv1 vs เอ็นจิ้นการเก็บข้อมูล WiredTiger
ใน mongoDB3 ปรากฏเครื่องมือจัดเก็บข้อมูลใหม่: WiredTiger แต่MMAPv1ยังคงเป็นตัวเลือกเริ่มต้นใน Mongo หนึ่งอาจไม่ดีกว่าอื่น ๆ มันมักจะเป็นเรื่องของกรณีการใช้งานและการเลือกเครื่องมือที่เหมาะสมสำหรับงาน แต่เครื่องยนต์ไหนที่เหมาะกับงานอะไร ในความเป็นจริงในขณะที่ MMAPv1 เป็นเอ็นจิ้นเริ่มต้น WiredTiger ดูเหมือนจะดีกว่าในเกือบทุกสาขา มันมีคุณสมบัติเช่นเดียวกับ MMAPv1 บวก: ประสิทธิภาพการเขียนที่ดีขึ้น การทำงานพร้อมกันของระดับเอกสาร การบีบอัด ภาพรวมและระบบจุดตรวจ ฉันพบตารางเปรียบเทียบในบล็อกของ MongoDB : ดังนั้นถ้าคุณอยู่บน Solaris มีเหตุผลที่จะไม่เลือก WiredTiger หรือไม่? แก้ไข ที่นี่สองวิดีโอที่อธิบายในรายละเอียด internals ของ WiredTigerและMMAPv1

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
เปลี่ยนคอลัมน์จาก NOT NULL เป็น NULL - เกิดอะไรขึ้นภายใต้ประทุน?
เรามีตารางที่มีแถว 2.3B อยู่ เราต้องการเปลี่ยนคอลัมน์จาก NOT NULL เป็น NULL คอลัมน์มีอยู่ในหนึ่งดัชนี (ไม่ใช่ดัชนีแบบคลัสเตอร์หรือ PK) ชนิดข้อมูลไม่เปลี่ยนแปลง (เป็น INT) เพียงความไร้ค่า คำสั่งดังต่อไปนี้: Alter Table dbo.Workflow Alter Column LineId Int NULL การดำเนินการใช้เวลาเกินกว่า 10 ก่อนที่เราจะหยุดมัน (เรายังไม่ปล่อยให้มันทำงานจนเสร็จเพราะมันเป็นการปิดกั้นและใช้เวลานานเกินไป) เราอาจคัดลอกตารางไปยังเซิร์ฟเวอร์ dev เพื่อทดสอบว่าใช้เวลานานเท่าใด แต่ฉันอยากรู้ถ้าใครรู้ว่าสิ่งที่ SQL Server ทำภายใต้ประทุนเมื่อแปลงจาก NOT NULL เป็น NULL นอกจากนี้ดัชนีที่ได้รับผลกระทบจะต้องได้รับการสร้างใหม่หรือไม่ แผนแบบสอบถามที่สร้างขึ้นไม่ได้ระบุว่าเกิดอะไรขึ้น ตารางในคำถามถูกทำคลัสเตอร์ (ไม่ใช่ฮีป)

4
เป็นไปได้ไหมที่จะสร้างหนึ่งคอลัมน์แบบอ่านอย่างเดียว?
ฉันอยากรู้ว่าเป็นไปได้ไหมที่จะสร้างตารางที่มีคอลัมน์ที่ไม่สามารถเปลี่ยนแปลงได้ แต่คอลัมน์อื่น ๆ ของตารางสามารถทำได้ เช่นฉันสามารถจินตนาการCreatedByUserคอลัมน์ที่ไม่ควรเปลี่ยนแปลง มีฟังก์ชันในตัวใน SQL Server สำหรับสิ่งนี้หรือเป็นไปได้เฉพาะผ่านทางทริกเกอร์หรืออย่างอื่นเท่านั้น
25 sql-server 

2
'ibfk' หมายถึงอะไรใน MySQL
ถ้าฉันสร้างข้อ จำกัด กุญแจต่างประเทศสำหรับตาราง 'รูปถ่าย' ใน phpmyadmin ภายหลังฉันเห็นว่าข้อ จำกัด ชื่อ 'photos_ibfk_1' และข้อ จำกัด ถัดไปเรียกว่า 'photos_ibfk_2' ฯลฯ จากนี้ฉันได้รวบรวมว่า [tablename] _ibfk_constraintIndex การประชุมสำหรับข้อ จำกัด ของฐานข้อมูลใน MySQL ถูกต้องหรือไม่ IBFK หมายถึงอะไร

2
คุณสามารถใช้ COUNT DISTINCT กับ OVER clause ได้หรือไม่?
ฉันพยายามปรับปรุงประสิทธิภาพของข้อความค้นหาต่อไปนี้: UPDATE [#TempTable] SET Received = r.Number FROM [#TempTable] INNER JOIN (SELECT AgentID, RuleID, COUNT(DISTINCT (GroupId)) Number FROM [#TempTable] WHERE Passed = 1 GROUP BY AgentID, RuleID ) r ON r.RuleID = [#TempTable].RuleID AND r.AgentID = [#TempTable].AgentID ขณะนี้ข้อมูลการทดสอบของฉันใช้เวลาประมาณหนึ่งนาที ฉันมีอินพุตจำนวน จำกัด ในการเปลี่ยนแปลงในโพรซีเดอร์ที่เก็บไว้ทั้งหมดที่มีการค้นหานี้ แต่ฉันสามารถให้พวกเขาแก้ไขเคียวรีนี้ได้ หรือเพิ่มดัชนี ฉันพยายามเพิ่มดัชนีต่อไปนี้: CREATE CLUSTERED INDEX ix_test ON #TempTable(AgentID, …

1
ทริกเกอร์ร่วมกับการทำธุรกรรม
สมมติว่าเรามีสถานการณ์ต่อไปนี้: เรามีตาราง (พูด Let 's Table_A), INSERTชมีทริกเกอร์บน งานทริกเกอร์คือการอัพเดตบางแถวtable_Btable_Aขึ้นอยู่กับค่าที่แทรกอยู่ใน ตอนนี้ทุกอย่างก็โอเคเมื่อเราแทรกแถวในตารางอย่างง่าย แต่แล้วสถานการณ์ที่เราแทรกข้อมูลผ่านการทำธุรกรรมล่ะ ทริกเกอร์จะรอจนกว่าคำสั่งการทำธุรกรรมทั้งหมดจะทำงานได้สำเร็จหรือจะถูกเรียกใช้ทันทีที่มันรับรู้ถึงการแทรก? หากทริกเกอร์ยิงทันทีเมื่อรับรู้การแทรกครั้งแรกจะเกิดอะไรขึ้นถ้าทรานแซคชันล้มเหลวในแถวสุดท้าย มีกลไกสำหรับสถานการณ์นั้นไหม

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

1
Mysql Innodb: InnoDB: ข้อผิดพลาด: อายุของด่านสุดท้ายคือ InnoDB: ซึ่งเกินความจุของกลุ่มบันทึก
ฉันต้องการ mysql ที่เชี่ยวชาญจริงๆ ฉันเป็นคนใหม่ให้กับ mysql และฉันเห็นเซิร์ฟเวอร์ขัดข้องบางส่วนของฐานข้อมูลของฉันในช่วง 1 สัปดาห์ที่ผ่านมา ฉันใช้ mysql 5.1.36 บน Ubuntu นี่คือเซิร์ฟเวอร์ mysql โดยเฉพาะพร้อมหน่วยความจำ Dual core และ 4GB และ 40GB SSD ข้อผิดพลาดบันทึกคือ: 120413 23:57:15 [Note] Plugin 'FEDERATED' is disabled. 120413 23:57:15 [Warning] option 'innodb-autoextend-increment': unsigned value 2000 adjusted to 1000 120413 23:57:15 InnoDB: Initializing buffer pool, size = …
25 mysql  innodb 

1
เปลี่ยนความยาวของ varchar บนตารางผลิตภัณฑ์สด
ฉันมีเซิร์ฟเวอร์ฐานข้อมูล MS SQL Server 2008 R2 อยู่ในขณะนี้ที่ใช้กับแอปที่ใช้งานจริง การปรับปรุงใหม่ให้กับแอพตอนนี้ต้องการvarchar(100)คอลัมน์ในตารางที่จะเพิ่มความยาว ความยาวของคอลัมน์ที่มีอยู่นี้ใน prod DB จะเพิ่มขึ้นได้หรือไม่โดยไม่กระทบต่อข้อมูลปัจจุบัน การเปลี่ยนแปลงนี้จะต้องเสร็จสิ้นในช่วงนอกเวลาทำการเพื่อหลีกเลี่ยงการหยุดให้บริการหรือไม่?

3
innodb_file_format Barracuda
ฉันมีคำถามสองสามข้อสำหรับผู้ที่คุ้นเคยมากกว่า อินสแตนซ์ส่วนใหญ่ของฉันใช้แอนตีโลปแม้จะได้รับการสนับสนุนจาก Barracuda ฉันกำลังมองหาที่จะเล่นกับตาราง innodb ที่บีบอัด ความเข้าใจของฉันคือนี่ใช้ได้เฉพาะในรูปแบบ Barracuda ฉันเห็นว่า innodb_file_format เป็นแบบไดนามิกดังนั้นฉันจึงสามารถสลับกลับได้โดยไม่ต้องตีกลับ มีความหมายใด ๆ ในการทำเช่นนี้ฉันควรระวัง ทั้งหมดที่ฉันบอกได้คือนั่นหมายถึงตารางใหม่หรือการเปลี่ยนแปลงในภายหลังจะถูกสร้างด้วยรูปแบบนั้น ทั้งหมดนี้ถูกต้องหรือไม่ ฉันหวังว่าจะไม่ผ่านและแปลงตารางทั้งหมดของฉัน เป็น kosher ที่มี antelope และ barracude table อยู่ใน tablespace เดียวกันหรือไม่? แม้ว่ามันจะใช้ได้หรือไม่มี gotcha ที่ต้องระวัง? จากสิ่งที่ฉันอ่านและรวบรวมจากการทดสอบของฉันคำตอบคือ: ใช่ ใช่. ฉันไม่แน่ใจ. ปรับปรุง ฉันใช้ Dynamic กับบางตารางที่ถูกบีบอัดในอินสแตนซ์ต่าง ๆ ตั้งแต่โพสต์นี้โดยไม่มีปัญหา ต่อไปฉันละเลยที่จะอ่านhttp://dev.mysql.com/doc/refman/5.5/en/innodb-file-format-identifying.html ในเวลานั้น หลังจากที่คุณเปิดใช้งาน innodb_file_format ที่กำหนดการเปลี่ยนแปลงนี้จะใช้กับตารางที่สร้างขึ้นใหม่เท่านั้นแทนที่จะเป็นตารางที่มีอยู่ หากคุณสร้างตารางใหม่พื้นที่ตารางที่มีตารางจะถูกติดแท็กด้วยรูปแบบไฟล์“ เร็วที่สุด” หรือ“ ง่ายที่สุด” ที่จำเป็นสำหรับคุณสมบัติของตาราง …

1
ฉันจะเปลี่ยนคีย์หลักที่มีอยู่ใน SQL Azure ได้อย่างไร
ฉันต้องการแก้ไขคีย์หลักที่มีอยู่ในตาราง SQL Azure ปัจจุบันมีหนึ่งคอลัมน์และฉันต้องการเพิ่มอีกคอลัมน์ ตอนนี้ใน SQL Server 2008 นี่เป็นเค้กชิ้นหนึ่งเพียงแค่ทำใน SSMS เท่านั้น เสร็จสิ้น นี่คือลักษณะที่ปรากฏของ PK ถ้าฉันเขียนสคริปต์จาก SQL Server: ALTER TABLE [dbo].[Friend] ADD CONSTRAINT [PK_Friend] PRIMARY KEY CLUSTERED ( [UserId] ASC, [Id] ASC ) อย่างไรก็ตามใน SQL Azure เมื่อฉันพยายามเรียกใช้งานข้างต้นแน่นอนว่ามันจะล้มเหลว: Table 'Friend' already has a primary key defined on it. ไม่เป็นไรฉันก็เลยลองวางกุญแจ: Tables without a …

3
การจัดการภาวะพร้อมกันเมื่อใช้รูปแบบ SELECT-UPDATE
สมมติว่าคุณมีรหัสต่อไปนี้ (โปรดอย่าสนใจว่ามันแย่มาก): BEGIN TRAN; DECLARE @id int SELECT @id = id + 1 FROM TableA; UPDATE TableA SET id = @id; --TableA must have only one row, apparently! COMMIT TRAN; -- @id is returned to the client or used somewhere else ในสายตาของฉันนี่ไม่ใช่การจัดการภาวะพร้อมกันอย่างเหมาะสม เพียงเพราะคุณมีการทำธุรกรรมไม่ได้หมายความว่าคนอื่นจะไม่อ่านค่าเดียวกันกับที่คุณทำก่อนที่คุณจะได้รับการปรับปรุงของคุณ ตอนนี้ปล่อยให้รหัสตามที่เป็นอยู่ (ฉันตระหนักดีว่านี่คือการจัดการที่ดีกว่าเป็นคำสั่งเดียวหรือดียิ่งขึ้นโดยใช้คอลัมน์ autoincrement / เอกลักษณ์) สิ่งที่แน่ใจว่าวิธีที่จะทำให้มันจัดการพร้อมกันอย่างถูกต้องและป้องกันเงื่อนไขการแข่งขัน ค่า …

2
วิธีที่ปลอดภัยที่สุดในการเปลี่ยนรูปแบบ binlog คืออะไร
เนื่องจากคำเตือนต่อไปนี้ในmysqld.log: [คำเตือน] คำสั่งที่ไม่ปลอดภัยเขียนลงในบันทึกแบบไบนารีโดยใช้รูปแบบคำสั่งตั้งแต่ BINLOG_FORMAT = STATEMENT คำสั่งไม่ปลอดภัยเนื่องจากใช้ส่วนคำสั่ง LIMIT สิ่งนี้ไม่ปลอดภัยเนื่องจากไม่สามารถทำนายชุดของแถวที่รวมไว้ได้ MIXEDฉันต้องการที่จะเปลี่ยนรูปแบบการจำลองแบบ แต่ตามเอกสาร MySQL: การสลับรูปแบบการจำลองแบบที่รันไทม์จะไม่แนะนำเมื่อมีตารางชั่วคราวใด ๆ อยู่เนื่องจากตารางชั่วคราวจะถูกบันทึกเมื่อใช้การจำลองแบบตามคำสั่งเท่านั้นในขณะที่มีการจำลองแบบแถวที่ใช้พวกเขาจะไม่ถูกบันทึกไว้ ดังนั้นคำถามคือฉันจะระบุได้อย่างไรว่ามีตารางชั่วคราวใด ๆ ที่มีอยู่เพื่อเปลี่ยนรูปแบบไฟล์บันทึกอย่างปลอดภัยหรือไม่

1
บทบาทการบริการรายงานและแอปพลิเคชัน
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา โปสเตอร์แรกผู้สิงสู่มานานที่นี่ วิธีที่ดีที่สุดในการเปิดใช้งานบทบาทแอปพลิเคชันในรายงานคืออะไร ฉันได้ลองสิ่งที่แตกต่างและวิธีเดียวที่ทำงานคือฝังการเรียกไปยังบทบาทของแอปพลิเคชันเช่น: - EXEC sp_setapprole 'REPORTZ', 's3cr3t'; select * from mytable where ID < 10000 ในชุดข้อมูล มันใช้งานได้ ... แต่ไม่ใช่ตามความชอบของฉัน (แน่นอนว่าไม่ใช่ในรูปแบบที่ฉันต้องการนำไปใช้ในสภาพแวดล้อมการผลิต) ฉันต้องการถ้าฉันสามารถ 'จี้' หรือ 'ฉีด' บรรทัดการเปิดใช้งานบทบาทแอปพลิเคชันที่รันไทม์อย่างใดอย่างหนึ่งผ่านชุดประกอบที่กำหนดเองหรืออาจเป็น 'เบ็ดเซิร์ฟเวอร์' ในบริการรายงาน (ในทั้งสองกรณีฉันไม่รู้ว่า ) ชื่นชมมากสำหรับเวลาของคุณ + ความใส่ใจ YS
25 sql-server  ssrs  role 

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