ฉันสามารถใส่ DB ทั้งหมดในหน่วยความจำได้หรือไม่?


9

ฐานข้อมูลของฉันมีขนาดประมาณ 1gb (ตามไฟล์ mdf ของ db ของฉัน) เซิร์ฟเวอร์ฐานข้อมูลของฉันมี RAM 4GB ดูปริมาณการใช้หน่วยความจำของคอมพิวเตอร์ในขณะที่ใช้งานอยู่ที่ประมาณ 85% ที่ใช้ (รวมถึงระบบปฏิบัติการ ฯลฯ )

สิ่งนี้หมายความว่ากิจกรรมการอ่าน DB ทั้งหมดทำงานในหน่วยความจำเพียงอย่างเดียว (เช่นฐานข้อมูลทั้งหมดอยู่ในหน่วยความจำ) หรือไม่ หรือยังมีกรณีที่จะต้องไปที่ดิสก์?


1
สำหรับการเปรียบเทียบการใช้งานเมื่อแอปพลิเคชันไม่ทำงานคืออะไร โดยทั่วไปข้อดีอย่างหนึ่งของระบบฐานข้อมูลคือมันไม่ต้องการไฟล์เต็มในหน่วยความจำ แต่มันจะพอดีกับสิ่งที่คุณดึงออกมาไว้ในหน่วยความจำจนกว่าคุณจะล้างออกจากที่อื่น ฉันจะต้องประกาศว่า 'ไม่'
โทมัส

@นาย. ความผิดหวัง: ฉันยอมรับว่าเป็นประโยชน์ แต่ในกรณีที่สามารถใส่ไฟล์เต็มในหน่วยความจำ (เช่นกรณีนี้) ได้หรือไม่

มันควรจะต้องใช่แล้ว แต่ตามความต้องการของผู้โทรและข้อมูลที่พวกเขาต้องการไม่ใช่เป็นเรื่องแน่นอน ดังนั้นโดยทั่วไปหากคุณมีปัญหาเกี่ยวกับหน่วยความจำฐานข้อมูลรหัสโทรศัพท์หรือซอฟต์แวร์ที่สนับสนุนหรือการรวมกันของทั้งสอง
โทมัส

1
ตัวอย่างสำหรับมุมมอง: ฉันรู้ว่า บริษัท อินเทอร์เน็ตที่ใหญ่มากเป็นเจ้าของเว็บไซต์พอร์ทัลใหญ่มากหลายแห่ง พวกเขาส่งมอบแคลิฟอร์เนีย 300 ล้านโฆษณาจากเซิร์ฟเวอร์โฆษณาของตนเองสำหรับพอร์ทัลเหล่านั้น โครงสร้างของเซิร์ฟเวอร์โฆษณาเป็นเช่นที่มีขนาดใหญ่ของ Oracle DB กับทุกข้อมูลสำหรับการบันทึกบัญชีและการกำหนดเป้าหมาย แต่มีขนาดใหญ่ 32 (RAM 32GB) เซิร์ฟเวอร์ฐานข้อมูลการถือครองที่มีขนาดเล็ก (มีเพียงโฆษณาที่ใช้งานในปัจจุบัน) ในแรม พวกเขาไม่ได้แตะดิสก์ แต่ต้องไม่: พวกเขามีเวลา 1/1000 วินาทีเท่านั้นในการค้นหาโฆษณาเมื่อมีข้อความค้นหาเข้ามาการเข้าถึงดิสก์ใด ๆ จะทำให้เป้าหมายนั้นเข้าถึงไม่ได้

คำตอบ:


5

ใช่ฐานข้อมูลทั้งหมดจะถูกเก็บไว้ในหน่วยความจำ มันจะล้างหน้าสกปรกไปยังดิสก์ในช่วงเวลาที่ด่าน โปรดทราบว่าการอัปเดตทั้งหมดจะต้องเขียนลงในบันทึกและรอให้บันทึกของบันทึกแข็งตัวในพื้นที่จัดเก็บที่คงทนก่อนส่งมอบ เอกสารเก่าI / O พื้นฐานของ SQL Server 2000นี้มีรายละเอียดทั้งหมดที่คุณต้องการและอื่น ๆ อีกมากมาย

แต่คุณไม่ต้องเดาคุณสามารถวัดสิ่งนี้ได้อย่างแม่นยำและดูว่ามันเกิดขึ้นหรือไม่ ตัวนับประสิทธิภาพที่เกี่ยวข้องคือ:

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

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

@นาย. ความผิดหวัง: คุณกำลังใช้คำตอบของฉันกับคำถามอื่น OP กล่าวว่า: My database is about 1gb in size (according to the mdf file of my db). My database server has 4gb of ram.. หากคุณต้องการคำตอบสำหรับกรณีที่เมื่อคุณมี 60 เว็บไซต์และวิธีการที่ไม่บัฟเฟอร์แคชในการทำงานในกรณีที่แล้วถามคำถามที่ :)
รีมัส Rusanu

คุณเป็นผู้เชี่ยวชาญที่นี่ แต่โปรดยกโทษให้ฉันด้วยความอยากรู้อยากเห็น: ทฤษฏีนี้สันนิษฐาน (เพราะเราไม่มีข้อมูลที่เฉพาะเจาะจง) ว่าเครื่องกำลังทำอะไรอยู่หรือเปล่า? หรือบัญชีสำหรับขีด จำกัด ของหน่วยความจำที่ผู้ใช้ไม่รู้จักใช้
โทมัส

อย่างที่ฉันพูด: you don't have to guess, you can measure this exactly.
Remus Rusanu

-5

DB ทั้งหมด (เช่นข้อมูล) จะไม่ถูกเก็บไว้ในหน่วยความจำ (เซิร์ฟเวอร์ sql) หลังจากตรวจสอบดัชนีและ / หรือคีย์มันจะดึงตัวชี้ไปยังตำแหน่งที่อยู่ในไฟล์ข้อมูลที่คุณกำลังค้นหาและจากนั้นไปที่แผ่นดิสก์เพื่อดึงข้อมูล หากไม่มีปุ่มหรือดัชนีจะต้องสแกนทั้งกอง

ทั้งนี้ขึ้นอยู่กับเวอร์ชันของ SQL Server ที่คุณกำลังใช้งานอาจมีกลยุทธ์สำหรับการแคชข้อมูลที่ใช้ดีเพื่อลดการอ่านดิสก์

คุณสามารถรับฐานข้อมูลในหน่วยความจำได้เช่นฐานข้อมูล MySql Cluster .... สิ่งนี้ได้รับการออกแบบเพื่อให้พอดีกับฐานข้อมูลทั้งหมดในหน่วยความจำในคลัสเตอร์ของเซิร์ฟเวอร์เพื่อการกู้คืนข้อมูลที่พร้อมใช้งาน / ภัยพิบัติและการดึงข้อมูลที่รวดเร็ว


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