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

MySQL ทุกรุ่น (ไม่ใช่ Microsoft SQL Server) โปรดเพิ่มแท็กเฉพาะเวอร์ชันเช่น mysql-5.7 หากเกี่ยวข้องกับคำถาม

3
ข้อผิดพลาด - ฟังก์ชัน 'innodb' มีอยู่แล้ว
ฉันต้องการเริ่มแปลง MyISAM บางตารางเป็น INNODB ใช้ Ubuntu 14.04 เซิร์ฟเวอร์พร้อม MySQL 5.6 (apt-get อัพเกรดจาก 5.5), 32G ram บนซีพียู 4 คอร์ / 8 เธรด เริ่มแรกมีปัญหากับ ... could not open single-table tablespace file .\mysql\innodb_index_stats.ibd after restart of MySQL และ Error: Table "mysql"."innodb_table_stats" not found. ฉันทำตามคำแนะนำที่โพสต์ของ Rolando แล้วและฐานข้อมูลไม่พังหรือสร้างข้อผิดพลาดขนาดใหญ่อีกต่อไป (ปัญหาข้างต้นหายไปเพียงอธิบายเหตุการณ์สำคัญ ๆ ) ตอนนี้ฉันกังวลเกี่ยวกับข้อผิดพลาดต่อไปนี้ก่อนที่ฉันจะแปลงอะไรเป็น INNODB สหพันธ์สามารถละเว้นจากสิ่งที่ฉันอ่านบรรทัดที่สองด้านล่าง (รวมถึงหัวข้อของโพสต์นี้) …
11 mysql  innodb 

2
วิธีการวางตารางที่ว่างเปล่า
เป็นไปได้หรือไม่ที่จะลบตารางที่ว่างเปล่าทั้งหมดออกจากฐานข้อมูลขนาดใหญ่ของฉัน (mysql)? ฉันกำลังมองหาคำสั่ง sql ที่จะลบตารางว่างเหล่านั้นทั้งหมดโดยอัตโนมัติ ขณะนี้ฉันมี 305 ตารางในชุดข้อมูลของฉันและประมาณ 30% ของพวกเขาเป็นตารางเปล่าเก่าที่จะไม่ใช้ในแอปพลิเคชันใหม่ของฉัน เพียงชี้แจง ตารางทั้งหมดเป็นประเภท = MyISAM
11 mysql  myisam 

2
วิธีการออกแบบดัชนีสำหรับคอลัมน์ที่มีค่า NULL ใน MySQL
ฉันมีฐานข้อมูลที่มี 40 ล้านรายการและต้องการเรียกใช้แบบสอบถามด้วยWHEREประโยคต่อไปนี้ ... WHERE `POP1` IS NOT NULL && `VT`='ABC' && (`SOURCE`='HOME') && (`alt` RLIKE '^[AaCcGgTt]$') && (`ref` RLIKE '^[AaCcGgTt]$') && (`AA` RLIKE '^[AaCcGgTt]$') && (`ref` = `AA` || `alt` = `AA`) LIMIT 10 ; POP1เป็นคอลัมน์ลอยที่ยังสามารถเป็น NULL POP1 IS NOT NULLควรแยกประมาณ 50% ของรายการนั่นเป็นเหตุผลที่ฉันใส่ไว้ในตอนเริ่มต้น เงื่อนไขอื่น ๆ ทั้งหมดลดจำนวนเพียงเล็กน้อย ในบรรดาคนอื่น ๆ ฉันออกแบบดัชนีpop1_vt_sourceซึ่งดูเหมือนจะไม่ได้ใช้ในขณะที่ใช้ดัชนีที่vtเป็นคอลัมน์แรก …
11 mysql  index 

2
ไม่สามารถวางตารางได้เนื่องจากกำลังรอการล็อกเมตาดาต้า
เราพยายามที่จะวางตารางหนึ่ง แต่มันถูกแขวนและเมื่อเราเห็นคำสั่ง 'SHOW PROCESSLIST' มันแสดงว่า 'กำลังรอเมตาดาต้าล็อคข้อมูล' แม้ว่าเราจะไม่สามารถทำการดำเนินการใด ๆ ในตารางนั้น ไม่มีใครรู้วิธีการแก้ไขหรือไม่

2
ปัญหาการปรับให้เหมาะสม: คีย์ผสมคลัสเตอร์เงื่อนไขแฟล็กและการรวมดัชนี
สามตาราง: product: กับคอลัมน์: ( a, g, ...a_lot_more... ) a: PK, clustered g: bit-column main: กับคอลัมน์: ( c, f, a, b, ...a_lot_more... ) c: PK, clustered f: bit-column (a, b): UQ lookup กับคอลัมน์: ( a, b, c, i ) (a, b): PK, clustered a: FK to product(a) c: UQ, FK to …

2
จะใช้ RESTRICT สำหรับ Foreign Key ใน mysql ได้อย่างไร
ในโครงสร้างฐานข้อมูลของ CREATE TABLE Country ( name varchar(40) NOT NULL, PRIMARY KEY (name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE City ( name varchar(40) NOT NULL, PRIMARY KEY (name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE Map ( country varchar(40) NOT NULL, city varchar(100) NOT NULL, PRIMARY KEY (country,city), FOREIGN KEY (country) REFERENCES …

1
รีบูตเครื่อง MySQL Replication Slave
เป็นครั้งแรกนับตั้งแต่มีการตั้งค่าฉันจำเป็นต้องรีบูตทาสการจำลองแบบ MySQL แบบอ่านอย่างเดียว ฉันพบบทความนี้เกี่ยวกับการทำให้ทาสตกต่ำเพื่อการบำรุงรักษา (แม้ว่าเขาจะอธิบายการหยุดmysqldaemon): วิธีการอย่างปลอดภัย [sic] รีสตาร์ทเซิร์ฟเวอร์ MySQL Slave ของคุณ โดยสรุปขั้นตอนคือ: ในmysqlลูกค้า: STOP SLAVE; FLUSH TABLES; จากระบบปฏิบัติการ: /etc/init.d/mysql stop ฉันจะรีบูทที่จุดนี้จากนั้นหลังจากระบบบูท: ในmysqlไคลเอนต์ ( mysqldaemon ถูกกำหนดค่าให้เริ่มการบู๊ต): START SLAVE; มันดูถูกหรือไม่? มีอะไรอีกบ้างที่ฉันควรทำ?

2
ประสิทธิภาพของทริกเกอร์ vs ขั้นตอนการจัดเก็บใน MySQL
โพสต์ที่นี่ใน DBA.StackExchange ( อะไรคือแนวทางปฏิบัติที่ดีที่สุดสำหรับทริกเกอร์เพื่อรักษาหมายเลขการแก้ไขเรคคอร์ด? ) ทำให้เกิดคำถามที่น่าสนใจ (อย่างน้อยก็น่าสนใจสำหรับฉัน) เกี่ยวกับประสิทธิภาพใน MySQL บริบทคือเราต้องการแทรกระเบียนในตารางสำหรับแต่ละแถวที่มีการปรับปรุง ก่อนที่จะอัปเดตแถวเราต้องการเก็บค่าก่อนหน้าจากนั้นเพิ่มหนึ่งในคอลัมน์ (คอลัมน์ "รุ่น") หากเราทำสิ่งนี้ภายในทริกเกอร์มันจะทำงานได้ดี สำหรับ MySQL ทริกเกอร์เป็นแบบทีละแถวดังนั้นมันจึงเป็นทางออกที่ง่าย เลือกข้อมูลในตารางปัจจุบันแทรกลงในตารางการบันทึกและอัปเดตคอลัมน์ "version" ในข้อมูลใหม่ อย่างไรก็ตามเป็นไปได้ที่จะย้ายตรรกะนี้ไปยังกระบวนงานที่เก็บไว้ หากคุณทำเช่นนั้นคุณกำลังทำการแทรกแล้วเพิ่มคอลัมน์ "รุ่น" ในตาราง สิ่งทั้งหมดจะถูกตั้งค่าตาม ดังนั้นเมื่อมันมาถึงการแทรกนี้นี้จะมีประสิทธิภาพมากกว่าที่จะใช้วิธีการจัดเก็บตามชุดหรือวิธีการตามทริกเกอร์? คำถามนี้มีไว้สำหรับ MySQL (เนื่องจากมีทริกเกอร์แบบทีละแถว) แม้ว่าจะสามารถนำไปใช้กับ DBMS ทริกเกอร์แบบแถวต่อแถวอื่น ๆ ได้

3
การออกแบบสคีมาสำหรับผลิตภัณฑ์ที่มีหลายรูปแบบ / คุณลักษณะ?
ฉันใช้ MySQL แนวคิดนี้คล้ายกับ shopify ด้วยแนวคิดที่แตกต่างกันดังนั้นผู้ใช้จะเพิ่มผลิตภัณฑ์ของตัวเองด้วยตัวแปรและคุณลักษณะหลายประเภท จากการวิจัยทั้งหมดที่ฉันทำไปแล้วดูเหมือนจะเป็นทางออกที่ดีที่สุดสำหรับฉันและฉันแค่สงสัยว่ามีอะไรผิดปกติกับสคีมาดังต่อไปนี้และอัพไซด์ / ข้อเสียคืออะไร? ขอบคุณ Table: products ------------------------------ | ID | ProductName | |----------------------------| | 1 | Leather Wallet Case | | 2 | Jeans | | 3 | Power Bank | Table: products_variants ------------------------------- | ID | ProductId | ParentId | Variant | VariantName | …

3
วิธีที่ดีที่สุดในการใช้คิวตามตารางพร้อมกัน
ฉันมีตารางใน MySQL ที่แสดงถึงคิวของลิงก์ที่ต้องดำเนินการ ลิงก์จะถูกประมวลผลโดยแอพภายนอกหนึ่งต่อหนึ่งและถูกลบในท้ายที่สุด นี่เป็นคิวที่มีปริมาณสูงและฉันมีแอพประมวลผลหลายอินสแตนซ์กระจายอยู่ทั่วเซิร์ฟเวอร์หลายเครื่อง ฉันจะมั่นใจได้อย่างไรว่าแต่ละระเบียนจะถูกเลือกโดยแอปเดียวเท่านั้น มีวิธีการตั้งค่าสถานะ / ล็อกระเบียนหรือไม่ ตอนนี้เพื่อหลีกเลี่ยงการรับลิงค์เดียวกันสองครั้งขึ้นไปฉันอนุญาตให้แต่ละอินสแตนซ์รับเฉพาะชุดระเบียน (ตาม MOD ของ ID) แต่นี่ไม่ใช่วิธีที่โปร่งใสในการเพิ่มการประมวลผลคิว เพิ่มความเร็วเพียงแค่เพิ่มอินสแตนซ์ใหม่
11 mysql  queue 

1
ข้อผิดพลาดขนาดแถวกับ MySQL
ฉันใช้เซิร์ฟเวอร์ MySQL บน Macbook (สำหรับการทดสอบ) รุ่นคือ 5.6.20 จาก Homebrew ฉันเริ่มพบข้อผิดพลาด "ขนาดแถวใหญ่เกินไป" และฉันสามารถลดขนาดลงได้ในกรณีทดสอบนี้ โต๊ะ: mysql> describe test; +-------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | stuff | longtext | YES …
11 mysql  innodb 

5
ไม่สามารถสร้างตาราง แต่ไม่มีตาราง
ฉันใช้ขั้นตอนเหล่านี้เพื่อสร้างตารางmy_userที่มีอยู่แล้ว แต่หายไปจากฐานข้อมูลของฉันmy_db: mysql> USE my_db; mysql> DROP TABLE my_user; mysql> ERROR 1051 (42S02): Unknown table 'my_user' mysql> CREATE TABLE my_user (id INT AUTO_INCREMENT NOT NULL, username VARCHAR(255), group_id VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB; mysql> ERROR 1005 (HY000): Can't create table 'my_db.my_user' …
11 mysql  innodb 

3
การใช้ LIMIT ปรับปรุงประสิทธิภาพและเห็นได้ชัดเจนหรือไม่
ฉันต้องการที่จะเข้าใจต่อไปนี้ สมมติว่าฉันมีแบบสอบถามที่ซับซ้อนด้วยสมมติว่าเข้าร่วม 5 กลุ่มตารางโดยสรุปและสั่งซื้อโดย ปล่อยให้การปรับให้เหมาะสมกับแบบสอบถามตัวเองเช่นดัชนี ฯลฯ มีประสิทธิภาพการทำงานที่สำคัญใช้LIMIT? ฉันคิดว่าแบบสอบถามทั้งหมด (และผลลัพธ์) ต้องได้รับการประมวลผลก่อนที่จะใช้ LIMIT ดังนั้นการใช้ LIMIT เพื่อดึงชุดย่อยของผลลัพธ์นี้มีการปรับปรุงที่สำคัญ / ที่สังเกตเห็นได้หรือไม่?

3
ยูเนี่ยนช้า แต่คำถามทั้งสองแยกกันอย่างรวดเร็ว
Dunno ทำอะไรกับสิ่งนี้อีก ฉันมีตารางหนึ่งตารางที่มีจุดเริ่มต้นและคอลัมน์หยุดและฉันต้องการส่งคืนผลลัพธ์ของการรวมเข้าด้วยกันโดยเริ่มและหยุดและฉันต้องการความแตกต่างที่ชัดเจนระหว่างทั้งสอง ขณะนี้คำค้นหาทั้งสองทำงานแยกกันอย่างรวดเร็ว: SELECT UNIX_TIMESTAMP(CONVERT_TZ(start_dev, '+00:00', GetCarrierTimezone(a0.carrier_id))) AS alertStart, NULL AS alertStop, c0.name AS carrier_name, carrier_image, l0.Latitude, l0.Longitude FROM carriers AS c0 INNER JOIN start_stop AS a0 ON a0.carrier_id = c0.id INNER JOIN pcoarg AS l0 ON a0.startLogId = l0.id WHERE FIND_IN_SET(a0.carrier_id, '89467,1,64578,222625,45013') > 0 AND start_dev > '2013-03-11 …
11 mysql 


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