คำถามติดแท็ก innodb

InnoDB: เครื่องมือจัดเก็บ ACID ที่สอดคล้องกับ MySQL

4
ฉันจะได้รับมูลค่าปัจจุบันและมูลค่าที่มากกว่าในการเลือกได้อย่างไร?
ฉันมีตาราง InnoDB 'idtimes' (MySQL 5.0.22-log) พร้อมคอลัมน์ `id` int(11) NOT NULL, `time` int(20) NOT NULL, [...] ด้วยคีย์เฉพาะแบบผสม UNIQUE KEY `id_time` (`id`,`time`) ดังนั้นจึงอาจมีการประทับเวลาหลายรายการต่อ ID และหลาย ID ต่อการประทับเวลา ฉันพยายามตั้งค่าแบบสอบถามที่ฉันได้รับรายการทั้งหมดรวมถึงเวลาที่มากขึ้นสำหรับแต่ละรายการถ้ามีอยู่ดังนั้นควรส่งคืนเช่น: +-----+------------+------------+ | id | time | nexttime | +-----+------------+------------+ | 155 | 1300000000 | 1311111111 | | 155 | 1311111111 | 1322222222 | | …
18 mysql  innodb  select 

3
สุดยอด MyISAM และ InnoDB
เป็นไปได้หรือไม่ที่จะทำให้ InnoDB ใช้ดัชนีเช่นเดียวกับ MyISAM แทนที่จะเป็นดัชนีแบบคลัสเตอร์เนื่องจากข้อ จำกัด ของ RAM ในขณะที่รับประโยชน์จากประสิทธิภาพการทำงานพร้อมกัน?

3
การตั้งค่า MySQL InnoDB page_cleaner อาจไม่เหมาะสม
เห็นหมายเหตุนี้ใน mysqld.log: [Note] InnoDB: page_cleaner: 1000ms intended loop took 15888ms. The settings might not be optimal. (flushed=200 and evicted=0, during the time.) ดูเหมือนว่าจะมีการพูดถึงบางสิ่งเช่นนี้: MySQL อินสแตนซ์ถ่วง "ทำดัชนี SYNC" คำถามของฉันคือ:ควรมีการดำเนินการใดบ้างหากมีเมื่อเห็นบันทึกนี้ในบันทึก รุ่น MySQL และ OS: mysql-community-server- 5.7.9 -1.el7.x86_64 centos-release-7-1.1503.el7.centos.2.8.x86_64 กำลังแสดงตัวแปรต่างๆเช่น 'innodb%'; ตามที่แนะนำแสดงให้เห็น: innodb_page_cleaners | 1

3
มีวิธีใดที่ดีกว่าในการบันทึก MySQL InnoDB ในอนาคต?
ฉันมีข้อผิดพลาด InnoDB นี้ใน MySQL 5.0 Mysqld หยุดทำงานหมดจด แต่ฉันจัดการที่จะสูญเสีย ib_logfile0 & ib_logfile1 หลังจากนั้น หลังจากการเริ่มต้นใหม่ทั้งหมด InnoDB ได้ทำ "การกู้คืนความผิดพลาด" แล้ว ฉันผ่านธุรกิจ innodb_force_recovery = 4 ซ่อมแซมตาราง MyISAM ที่แขวนและตอนนี้การจำลองแบบก็พร้อมใช้งานนอกเหนือไปจากนี้ คำมั่นสัญญาใหญ่: 111116 15:49:36 InnoDB: Error: page 393457 log sequence number 111 561,760,232 InnoDB: is in the future! Current system log sequence number 70 3,946,969,851. InnoDB: Your …
16 mysql  innodb 

2
แถวขาดหายไปหลังจากการแปลงออนไลน์จาก MyISAM เป็น InnoDB
เรามีฐานข้อมูลขนาดเล็กพอสมควรที่เราต้องการแปลงจาก MyISAM เป็น InnoDB ในฐานะที่เป็น noobs ของฐานข้อมูลเราเพิ่งแปลง (โดยใช้ตารางแก้ไข) โดยไม่ทำให้เว็บไซต์ล้มเหลว ตอนนี้การแปลงเสร็จสิ้นแถวจำนวนมากเป็นระยะ ๆ ดูเหมือนจะหายไป อาจเป็นเพราะการดำเนินการระหว่างการแปลงหรือไม่ หรือเป็นปัญหาที่อื่น?
16 mysql  innodb  myisam 

2
ปัญหาในการถอดรหัสการหยุดชะงักในบันทึกสถานะของ Innodb
เรากำลังเข้าถึง MySQL จากตัวเชื่อมต่อ Microsoft ADO.NET บางครั้งเราเห็นการหยุดชะงักต่อไปนี้ในสถานะ Innodb ของเราและไม่สามารถระบุสาเหตุของปัญหาได้ ดูเหมือนว่าธุรกรรม (2) กำลังรอและถือล็อกเดียวกันอยู่หรือไม่ ------------------------ LATEST DETECTED DEADLOCK ------------------------ 110606 5:35:09 *** (1) TRANSACTION: TRANSACTION 0 45321452, ACTIVE 0 sec, OS thread id 3804 starting index read mysql tables in use 1, locked 1 LOCK WAIT 2 lock struct(s), heap size 368, 1 …

5
เหตุใดเธรด MySQL จึงแสดงสถานะ“ การเพิ่มรายการ” บ่อยครั้งเมื่อปิดคิวการสืบค้น
เมื่อฉันรันSHOW PROCESSLISTมักจะมีเธรด INSERT / UPDATE จำนวนมากในสถานะ "การปล่อยไอเท็ม" คู่มือ MySQL แสดงให้เห็นว่าอย่างน้อยส่วนหนึ่งของเหตุผลสำหรับเธรดที่อยู่ในสถานะนี้เกี่ยวข้องกับแคชคิวรี - ซึ่งสันนิษฐานว่ามันจะทำให้คิวรีแคชใช้งานไม่ได้เนื่องจากข้อมูลที่เปลี่ยนแปลง อย่างไรก็ตามฉันquery_cache_sizeถูกตั้งค่าเป็น 0 ซึ่งควรปิดการใช้งานแคชแบบสอบถามทั้งหมด มีเหตุผลอื่นอีกไหมที่จะมีเธรดจำนวนมากในสถานะนี้ ตารางที่เกี่ยวข้องใช้เอ็นจิ้นการจัดเก็บข้อมูล InnoDB
16 mysql  innodb 

2
ดัชนีต้องครอบคลุมคอลัมน์ที่เลือกทั้งหมดเพื่อให้ ORDER BY ใช้หรือไม่
เมื่อเร็ว ๆ นี้ที่บางคนถามว่าทำไมไม่สั่งโดยใช้ดัชนี? สถานการณ์เกี่ยวข้องกับตาราง InnoDB อย่างง่ายใน MySQL ประกอบด้วยสามคอลัมน์และ 10k แถว หนึ่งในคอลัมน์เป็นจำนวนเต็มถูกทำดัชนี - และ OP พยายามดึงตารางทั้งหมดของเขาที่เรียงลำดับในคอลัมน์นั้น: SELECT * FROM person ORDER BY age เขาแนบEXPLAINเอาท์พุทแสดงว่าแบบสอบถามนี้ได้รับการแก้ไขด้วยfilesort(แทนที่จะเป็นดัชนี) และถามว่าทำไมจึงเป็นเช่นนั้น แม้จะมีคำใบ้ FORCE INDEX FOR ORDER BY (age) ที่ก่อให้เกิดดัชนีที่จะใช้ , คนตอบ (กับการสนับสนุนความเห็น / upvotes จากคนอื่น ๆ ) ว่าดัชนีจะใช้เฉพาะสำหรับการเรียงลำดับเมื่อคอลัมน์ที่เลือกจะอ่านทั้งหมดจากดัชนี (เช่นเป็นปกติจะระบุโดยUsing indexในExtraคอลัมน์ ของEXPLAINเอาท์พุท) คำอธิบายที่ได้รับในภายหลังว่าภายในดัชนีแล้วเรียกคอลัมน์จากผลตารางในการสุ่ม I / O filesortซึ่งมุมมองที่เป็นราคาแพงกว่า สิ่งนี้ดูเหมือนจะปรากฏในหน้าของบทที่เกี่ยวกับORDER …
15 mysql  index  innodb  order-by 

1
กู้คืนฐานข้อมูล MySQL จากโฟลเดอร์ข้อมูลโดยไม่มี ibdata1 จากไฟล์ ibd
ไดเรกทอรี WAMP ของฉันถูกลบโดยผู้ใช้รายอื่นโดยไม่ตั้งใจ มีโฟลเดอร์ข้อมูลเฉพาะใน MySQL เท่านั้น และในโฟลเดอร์ฐานข้อมูลเท่านั้น (โฟลเดอร์ใน "\ bin \ mysql \ mysql5.6.12 \ data \" ที่มีชื่อฐานข้อมูล) จะพร้อมใช้งาน ไฟล์ทั้งหมดรวมถึง " ibdata1 " ที่อยู่ในรูทของ "\ bin \ mysql \ mysql5.6.12 \ data \" จะถูกลบเช่นกัน โฟลเดอร์ฐานข้อมูลมีไฟล์ที่มีนามสกุลด้านล่างเท่านั้น * .frm, * .ibd และไฟล์ "db.opt" วิธีการกู้คืนฐานข้อมูล ฉันได้ลองกู้ bdata1 แล้ว แต่ไม่สามารถรับกลับคืนมาได้ และบางฐานข้อมูลก็มี MYISAM ด้วย

1
อะไรคือไฟล์ iblog ใน mysql
ฉันต้องการที่จะเข้าใจไฟล์ ibdata เหล่านี้เพราะสิ่งเหล่านี้มีบทบาทสำคัญในกระบวนการกู้คืนความผิดพลาด ฉันไม่สามารถหาแหล่งข้อมูลที่เหมาะสมผ่านเว็บสำหรับเรื่องนี้
15 mysql  innodb  logs 

3
ทำไม MySQL ไม่สนใจดัชนีแม้จะมีผลบังคับใช้สำหรับการสั่งซื้อนี้ด้วย?
ฉันทำงานEXPLAIN: mysql> explain select last_name from employees order by last_name; +----+-------------+-----------+------+---------------+------+---------+------+-------+----------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-----------+------+---------------+------+---------+------+-------+----------------+ | 1 | SIMPLE | employees | ALL | NULL | NULL | NULL | NULL | …

2
การลบและเรียกคืนพื้นที่จากตาราง InnoDB
ฉันมีตาราง InnoDB 700GB ซึ่งฉันไม่ได้เขียนข้อมูลใด ๆ เพิ่มเติมไปยัง (อ่านเท่านั้น) ฉันต้องการลบข้อมูลเก่าที่เก็บไว้และเรียกคืนพื้นที่ดิสก์นั้น (ขณะที่ฉันหมดข้อมูล) ส่วนลบนั้นค่อนข้างง่ายเพราะฉันมีดัชนีหลักอัตโนมัติเพื่อให้ฉันสามารถวนซ้ำโดยใช้มันและลบแถว แต่นั่นจะไม่ทำให้ฉันกลับมามีพื้นที่อีก ฉันคิดว่าOPTIMIZE TABLEจะใช้ แต่อาจใช้เวลาตลอดไปบนโต๊ะ 700GB ดังนั้นมีตัวเลือกอื่นที่ฉันสามารถมองเห็นได้หรือไม่ แก้ไขโดย RolandoMySQLDBA สมมติว่าตารางของคุณคือmydb.mytableกรุณาเรียกใช้แบบสอบถามต่อไปนี้และโพสต์ที่นี่เพื่อให้คุณสามารถกำหนดพื้นที่ที่จำเป็นสำหรับการหดตัวของตาราง: SELECT FORMAT(dat/POWER(1024,3),2) datsize, FORMAT(ndx/POWER(1024,3),2) ndxsize, FORMAT((dat+ndx)/POWER(1024,3),2) tblsize FROM (SELECT data_length dat,index_length ndx FROM information_schema.tables WHERE table_schema='mydb' AND table_name='mytable') A; เราต้องดูโครงสร้างของตารางด้วยหากได้รับอนุญาต แก้ไขโดย Noam นี่คือผลลัพธ์ของแบบสอบถาม: datsize ndxsize tblsize 682.51 47.57 730.08 นี่คือโครงสร้างของตาราง ( …
14 mysql  innodb 

4
MySQL โหลดข้อมูล INFILE ช้า 80% หลังจากป้อนกิ๊กเล็กน้อยด้วยเครื่องมือ InnoDB
ฉันกำลังโหลดไฟล์ 100GB ผ่าน LOAD DATA INFILE ฉันประสบความสำเร็จกับ MyISAM ไม่กี่ชั่วโมงและทำ ฉันลองใช้ InnoDB ตอนนี้ โหลดเริ่มต้นอย่างรวดเร็วที่มากกว่า 10MB / วินาที (ดูการขยายไฟล์ตารางfile_per_tableเปิดอยู่) แต่หลังจากนั้นประมาณ 5GB ของข้อมูลมันจะช้าลงเป็นช่วง 2-4MB / วินาทีเพราะฉันได้มากกว่า 20GB มันก็ลดลงประมาณ 2MB / วินาที ขนาดบัฟเฟอร์พูล InnoDB คือ 8G และฉันได้ทำสิ่งต่อไปนี้ก่อนที่จะใช้คำสั่งโหลดข้อมูล INFILE: SET @@session.sql_log_bin=0; SET autocommit=0; SET unique_checks=0; SET foreign_key_checks=0; alter table item_load disable keys; //Run LOAD DATA …

5
เซิร์ฟเวอร์ MySQL หายไปจากการขัดขวางการนำเข้าของทิ้งขนาดใหญ่
ฉันพยายามนำเข้า sql dump ขนาดใหญ่ (2GB) ไปยัง mysql ในเครื่องของฉันบน mac ฉันสามารถทำสิ่งนี้ได้ในอดีต (ฉันใช้ MAMP) แต่ตอนนี้ฉันได้รับ ERROR 2006 (HY000) ที่บรรทัด 7758: เซิร์ฟเวอร์ MySQL หายไปทุกครั้งที่ฉันพยายามนำเข้าดัมพ์ ฐานข้อมูลมีตาราง innodb ฉันพยายามคัดลอกไฟล์ my-innodb-heavy-4G.cnf ไปยัง my.cnf ของฉันเพื่อดูว่าการตั้งค่าเหล่านั้นจะช่วยได้หรือไม่ แต่โชคไม่ดี ความคิดใด ๆ เกี่ยวกับสิ่งที่จะปรับแต่ง? ฉันใช้ "Mac OS X เวอร์ชั่น 10.6 (x86, 64- บิต), DMG Archive" จากที่นี่: http://dev.mysql.com/downloads/mysql/
14 mysql  innodb  dump  mac-os-x 

3
ALTER TABLE บนตารางขนาดใหญ่พร้อมคอลัมน์ที่จัดทำดัชนี
ฉันมีตารางขนาดใหญ่ที่มีคอลัมน์ VARCHAR (20) และฉันต้องแก้ไขเพื่อให้เป็นคอลัมน์ VARCHAR (50) โดยปกติแล้วการแสดง ALTER TABLE (การเพิ่ม TINYINT) ในตารางนี้จะใช้เวลาประมาณ 90-120 นาทีในการดำเนินการดังนั้นฉันสามารถทำได้ในคืนวันเสาร์หรือวันอาทิตย์เท่านั้นเพื่อหลีกเลี่ยงผลกระทบต่อผู้ใช้ฐานข้อมูล ถ้าเป็นไปได้ฉันต้องการจะทำการแก้ไขก่อนหน้านี้ คอลัมน์ถูกทำดัชนีด้วยซึ่งฉันเข้าใจว่าจะทำให้ ALTER TABLE ช้าลงเนื่องจากต้องสร้างดัชนีใหม่หลังจากแก้ไขความยาวคอลัมน์ แอพพลิเคชั่นเว็บถูกตั้งค่าในสภาพแวดล้อมการจำลองแบบ MySQL (26 ทาสและต้นแบบหนึ่งคน) ฉันจำได้ว่าเมื่ออ่านที่ไหนสักแห่งว่าวิธีหนึ่งคือการดำเนินการ ALTER TABLE บนแต่ละสลาฟก่อน (ลดผลกระทบต่อผู้ใช้) จากนั้นทำสิ่งนี้กับ Master แต่จะไม่ลองทำซ้ำคำสั่ง ALTER TABLE กับทาส? ดังนั้นคำถามของฉันคือ: วิธีที่ดีที่สุดสำหรับฉันที่จะปรับเปลี่ยนตารางนี้มีการหยุดชะงักขั้นต่ำให้กับผู้ใช้ของฉันคืออะไร? แก้ไข: ตารางคือ InnoDB

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