ไฟล์ ibdata ของฉันมีขนาดใหญ่มากอย่างน้อยก็ดูเหมือนว่าฉันจะมีขนาดใหญ่มาก นี่มันมากเกินไปหรือไม่แย่ขนาดนั้นเหรอ?
-rw-rw---- 1 mysql mysql 15G Apr 18 10:11 ibdata1
ไฟล์ ibdata ของฉันมีขนาดใหญ่มากอย่างน้อยก็ดูเหมือนว่าฉันจะมีขนาดใหญ่มาก นี่มันมากเกินไปหรือไม่แย่ขนาดนั้นเหรอ?
-rw-rw---- 1 mysql mysql 15G Apr 18 10:11 ibdata1
คำตอบ:
หากคุณเรียกใช้show table status
บนโต๊ะและData_free
เขตข้อมูลประกอบขนาดibdata1
ไฟล์ส่วนใหญ่ของคุณคุณอาจมีพื้นที่ว่างเปล่าจำนวนมาก การแทรก / ลบอย่างมากจะทำให้เกิดปัญหา หากเป็นกรณีและการแทรกและการลบชั่วคราวทำขึ้นเป็นกลุ่มของข้อมูลของคุณแล้วคุณมีกรณีที่ดีสำหรับไฟล์ต่อตาราง
นั่นไม่ใช่แบบอัตโนมัติ "ใช่" มีการพูดคุยกันมากมายในโลกเกี่ยวกับการแตกแฟรกเมนต์ภายในของไฟล์ InnoDB แต่การใส่ลงในระบบไฟล์เป็นไฟล์ต่อตารางเพียงแค่ย้ายการกระจายตัวของคุณไปยังระดับระบบไฟล์แทนระดับฐานข้อมูล
คิดว่าไฟล์ InnoDB ของคุณเป็นระบบไฟล์แทนที่จะเป็นไฟล์ หากคุณมีไฟล์จำนวนมากคุณจะต้องใช้ระบบไฟล์ขนาดใหญ่
ส่วนใหญ่ระบบไฟล์ทำได้ดีมากในการปรับขนาดเพื่อจัดการเทระไบต์ของข้อมูลและจำนวนไฟล์ที่ไม่สามารถบอกได้ บางครั้งพวกเขาพบปัญหาเกี่ยวกับการจัดทำดัชนีไม่ดี (เช่น จำกัด จำนวนไฟล์ในไดเรกทอรีก่อนที่จะส่งผลกระทบต่อประสิทธิภาพการทำงาน) แต่ส่วนใหญ่แล้วระบบไฟล์ที่ทันสมัยสามารถโยกย้ายได้ดีในช่วงเทราไบต์
InnoDB ทำหน้าที่ในลักษณะเดียวกัน ขนาดไฟล์ข้อมูลของคุณมีขนาดใหญ่ ... และเช่นเดียวกับระบบไฟล์ขนาดใหญ่ที่สามารถนำเสนอปัญหาเกี่ยวกับการสำรองข้อมูลของคุณ อย่างไรก็ตามเช่นเดียวกับการแบ่งระบบไฟล์ของคุณออกเป็นหลาย ๆ พาร์ติชั่นก็ไม่ได้ช่วยแก้ปัญหานี้ไม่ได้พยายามที่จะจัดการกับ innodb ในขณะที่คุณสามารถใช้innodb_file_per_tableฉันไม่ค่อยแนะนำ
เช่นเดียวกับระบบไฟล์ของคุณคำตอบที่ดีกว่าคือการรู้ข้อ จำกัด ภายในและทำงานภายในนั้น ทำความเข้าใจกับดัชนีและนำไปใช้อย่างเหมาะสม อย่าพยายามแยก InnoDB แต่มันไม่ได้มีไว้สำหรับสิ่งนั้น
ตั้งแต่ฉันดิ้นรนเพื่อสร้างสรรค์ถ่ายทอดแนวคิดที่นี่อ่านอย่างรวดเร็วว่าคำพูดนี้ดีกว่าที่ฉันสามารถ: เทราไบต์ไม่ได้เป็นข้อมูลขนาดใหญ่เป็นเพตาไบต์
ฉันจำสไลด์การตลาด MySQL ที่เก่าแก่จริง ๆ ซึ่งลูกค้าใช้คลังข้อมูลด้วยเทราไบต์ หลายปีที่ผ่านมา. InnoDB หรือ MyISAM ทั้งสองจะทำงานได้ นี่เป็นมาตรฐานของเนื้อหา MySQL บนชั้นวาง
อย่าเหงื่อฐานข้อมูล 15GB
InnoDB free: 7364608 kB
ไฟล์ ibdata ไม่ย่อขนาด - หากคุณเพิ่งทำตารางหรือลบแถวจำนวนมากออกไป - innodb ในการกำหนดค่าของคุณจะไม่ปล่อยพื้นที่ว่างกลับไปที่ระบบไฟล์ ฉันขอแนะนำให้คุณ:
ด้วยวิธีนี้คุณจะสามารถเรียกคืนพื้นที่เมื่อใดก็ตามที่คุณวางตาราง / ฐานข้อมูล innodb - ไฟล์ idb ที่เกี่ยวข้องจะถูกลบทันที