คำถามติดแท็ก storage-engine

4
InnoDB หรือ MyISAM ไหนเร็วกว่ากัน
MyISAM จะ "เร็วขึ้น" ได้อย่างไรกว่า InnoDB ถ้า MyISAM จำเป็นต้องอ่านข้อมูลในดิสก์หรือไม่ InnoDB ใช้บัฟเฟอร์พูลสำหรับดัชนีและข้อมูลและ MyISAM สำหรับดัชนีเท่านั้น

7
อะไรคือเหตุผล ** ไม่ ** ในการใช้เครื่องมือจัดเก็บข้อมูล MEMORY ใน MySQL?
ฉันเพิ่งค้นพบว่า MySQL มีเอ็นจิ้น "หน่วยความจำ" ที่ฉันไม่ทราบ ดูเหมือนว่าตัวเลือกนี้ควรให้ประสิทธิภาพที่ดีขึ้นอย่างมากกับฉันดังนั้นฉันจึงสงสัยว่ามีข้อบกพร่องใด ๆ ทั้งสองที่ฉันรู้คือ: ฉันต้องมี RAM เพียงพอที่จะถือตารางในคำถาม ตารางจะหายไปหากเครื่องปิด ฉันเชื่อว่า # 1 ไม่ควรเป็นปัญหาเนื่องจากฉันใช้ AWS EC2 และสามารถย้ายไปยังประเภทอินสแตนซ์ที่มีหน่วยความจำเพิ่มขึ้นหากจำเป็น ฉันเชื่อว่าฉันสามารถลด # 2 ได้โดยการถ่ายโอนข้อมูลกลับไปที่ดิสก์ตามต้องการ มีปัญหาอื่นอีกไหม เอ็นจิ้นหน่วยความจำสามารถให้ประสิทธิภาพที่แย่กว่า MyISAM หรือ InnoDB ได้หรือไม่? ฉันคิดว่าฉันอ่านบางอย่างที่ดัชนีแตกต่างจากเครื่องมือนี้ เป็นสิ่งที่ฉันต้องกังวลหรือไม่

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

3
เป็นการปฏิบัติทั่วไปหรือไม่ที่จะผสมตาราง InnoDB และ MyISAM บนเซิร์ฟเวอร์เดียวกัน
ฉันมีฐานข้อมูลเดียวประมาณ 4.5GB ที่ทำงานบนเซิร์ฟเวอร์ที่มี 8GB RAM ตารางส่วนใหญ่คือ MyIsam (ประมาณ 4.3GB) แต่ในไม่ช้าฉันจะแปลงบางส่วนเป็น InnoDB (มันจะเป็นกระบวนการที่ช้าโดยเน้นไปที่ตารางที่เน้นการเขียนมากที่สุดในตอนแรก) มีอะไรผิดปกติในการใช้งานเซิร์ฟเวอร์เฉพาะซึ่งมีเอ็นจินการจัดเก็บทั้งสองประเภทอยู่หรือไม่?

3
เร่งการแปลง MyISAM เป็น InnoDB
ฉันมีเซิร์ฟเวอร์ mysql 5.1 ที่มีฐานข้อมูลประมาณ 450 ตารางกินพื้นที่ 4GB ตารางเหล่านี้ส่วนใหญ่ (ทั้งหมดยกเว้น 2) คือ MyIsam สิ่งนี้ได้ดีสำหรับส่วนใหญ่ (ไม่ต้องการธุรกรรม) แต่แอปพลิเคชันได้รับปริมาณการใช้งานและตารางบางอย่างได้รับผลกระทบเนื่องจากการล็อกตารางในการปรับปรุง นั่นคือเหตุผลที่ 2 ของตารางคือ InnoDB ตอนนี้ การแปลงในตารางที่เล็กกว่า (100k แถว) ไม่ใช้เวลานานเลยทำให้การหยุดทำงานน้อยที่สุด อย่างไรก็ตามตารางการติดตามของฉันบางส่วนกำลังเข้าใกล้ 50 ล้านแถว มีวิธีเพิ่มความเร็วALTER TABLE...ENGINE InnoDBในตารางขนาดใหญ่หรือไม่? และถ้าไม่มีวิธีอื่นในการแปลงการหยุดทำงานน้อยที่สุดในตารางเขียนหนักเหล่านี้?

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

1
Array ของช่องและขนาดหน้าทั้งหมด
ฉันอ่านต่อในฟอรัมจำนวนมากและในหลาย ๆ บล็อกที่หน้าประกอบด้วยดังต่อไปนี้: ขนาดหน้า: 16 x 512B = 8192B ส่วนหัวของหน้า: = 96B แถว In_Row สูงสุด: = 8060B ใบนี้ (8192 - 96 - 8060) B = 36B ตกลงนี่เป็นตรรกะและถูกต้อง คำถามที่ฉันมีคือ: ทำไมผู้คนมากมายพูดว่า 36B ที่เหลือถูกสงวนไว้สำหรับอาร์เรย์สล็อต? เห็นได้ชัดว่าอาร์เรย์สล็อตให้ 2B ต่อแถวในหน้า; ดังนั้นอาจเล็กเพียง 2B และใหญ่ถึง 1472B: 2B: 1 แถว * 2B = 2B 1472B: 8096B = n * …

3
ฉันใช้เครื่องมือเก็บข้อมูล MEMORY แต่ MySQL ยังคงเขียนลงในดิสก์ของฉัน…ทำไม
ฉันใช้MEMORY Engineสำหรับตารางทั้งหมดที่เกี่ยวข้องกับแบบสอบถาม MYSQL เฉพาะเนื่องจากความเร็วในการเข้าถึงเป็นสิ่งสำคัญยิ่งสำหรับโครงการของฉัน ด้วยเหตุผลบางอย่างฉันสังเกตว่าการเขียนดิสก์จำนวนมากยังคงเกิดขึ้น เป็นเพราะ Windows สลับแรมกับดิสก์หรือไม่ ฉันจะป้องกันไม่ให้เกิดเหตุการณ์เช่นนี้ได้อย่างไร แก้ไข: นี่คือตัวแปรทั่วโลกของฉัน: mysql> show global variables; +---------------------------------------------------+-------------------------------------------------------------------------------- ------------------------------+ | Variable_name | Value | +---------------------------------------------------+-------------------------------------------------------------------------------- ------------------------------+ | auto_increment_increment | 1 | | auto_increment_offset | 1 | | autocommit | ON | | automatic_sp_privileges | ON | | back_log | 50 | | …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.