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

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

1
เหตุใด DELETE จึงช้ากว่า SELECT มากแล้วจึงลบตาม id
ฉันมีตาราง InnoDB ที่ค่อนข้างยุ่ง (200,000 แถวฉันเดาได้ว่ามีหลายสิบข้อความค้นหาต่อวินาที) เนื่องจากข้อผิดพลาดฉันได้รับ 14 แถวที่มีที่อยู่อีเมลไม่ถูกต้อง (เหมือนกัน) และต้องการลบทิ้ง ฉันลองDELETE FROM table WHERE email='invalid address'และได้รับ "เกินเวลารอการล็อค" หลังจากนั้นประมาณ 50 วินาที สิ่งนี้ไม่น่าประหลาดใจนักเนื่องจากคอลัมน์แถวไม่ได้จัดทำดัชนี อย่างไรก็ตามฉันทำSELECT id FROM table WHERE email='invalid address'และใช้เวลา 1.25 วินาที วิ่งDELETE FROM table WHERE id in (...)คัดลอกรหัสจากผลลัพธ์ SELECT ใช้เวลา 0.02 วินาที เกิดอะไรขึ้น? ใครสามารถอธิบายได้ว่าเหตุใด DELETE ที่มีเงื่อนไขจึงช้าลงจนหมดเวลา แต่การเลือก SELECT จากนั้นการลบด้วย id นั้นเร็วมาก …

1
ปิดใช้งานคอมมิชชันที่ชัดเจนใน JDBC ตรวจจับใน SQL หรือทำให้ฐานข้อมูลอยู่ในสถานะอ่านอย่างเดียว
พื้นหลัง : ฉันกำลังทำงานในhttp://sqlfiddle.com (เว็บไซต์ของฉัน) และกำลังพยายามป้องกันไม่ให้มีการละเมิดวิธีใดวิธีหนึ่ง ฉันหวังว่าด้วยการถามเกี่ยวกับปัญหาที่ฉันกำลังพูดถึงอยู่ในปัจจุบันฉันไม่ได้ตั้งใจทำให้การละเมิดที่อาจเกิดขึ้นแย่ลงโดยไม่ได้ตั้งใจ แต่คุณจะทำอย่างไร ฉันเชื่อใจพวกคุณ ฉันต้องการป้องกันไม่ให้ผู้ใช้ออกการเรียก 'ส่งสัญญาณ' อย่างชัดเจนภายในบล็อคธุรกรรม จากบริบทของ SQL Fiddle บล็อกธุรกรรมคือรหัสที่เรียกใช้งานบนแผงด้านขวา โดยทั่วไปฉันจะวนซ้ำและดำเนินการรายการคำสั่ง plaintext SQL และฉันต้องการให้แน่ใจว่าการเปลี่ยนแปลงทั้งหมดที่ทำจะถูกย้อนกลับในตอนท้ายของแบทช์ โดยปกติการเปลี่ยนแปลงของพวกเขาจะได้รับการย้อนกลับ แต่บางครั้งก็มีคำสั่ง 'กระทำ' ที่ชัดเจนภายในข้อความและแน่นอนว่าการย้อนกลับของฉันจะไม่ทำงาน ความมุ่งมั่นที่ชัดเจนนี้มีแนวโน้มมากจากผู้ใช้ที่พยายามจะทำลาย schema บน SQL Fiddle ดังนั้นคนอื่น ๆ ที่ทำงานกับมันจะเห็นข้อผิดพลาด ผลลัพธ์หลักที่ต้องการ : ฉันต้องการปิดใช้งานการกระทำที่ชัดเจนในระดับ JDBC ถ้าเป็นไปได้ นี่เป็นเพราะฉันต้องสนับสนุนผู้ขายแบ็กเอนด์ฐานข้อมูลหลายคนและแน่นอนว่าแต่ละคนมีนิสัยใจคอในระดับต่ำ ตัวเลือกสำรอง : หากไม่สามารถกำหนดค่า JDBC เพื่อปิดใช้งานการกระทำที่ชัดเจนได้ฉันจะเปิดให้มีการตรวจหาการกระทำที่ชัดเจนในขณะประมวลผลชุดข้อมูลสำหรับแบ็กเอนด์ต่อไปนี้: SQL Server, Oracle, MySQL และ PostgreSQL สำหรับ SQL …

2
บิตกับคอลัมน์บูลีน
เนื่องจากบิตฟิลด์นั้นเป็นเพียงการแสดงข้อมูลแบบไบนารี่และจำเป็นต้องทำการสอบถามในลักษณะที่ "แปลก" เล็กน้อย จริง ๆ แล้วมันให้ประโยชน์ใด ๆ โดยใช้เขตข้อมูลบิตสำหรับค่าบูลีนหรือไม่ จากสิ่งที่ฉันเห็นมันดูเหมือนว่าจะแนะนำว่าพื้นที่นั้นเป็นผลประโยชน์ที่แท้จริงเท่านั้น

2
PHP -> การเชื่อมต่อแบบต่อเนื่องของ Mysql ยังไม่มี mysql_pconnect - เป็นไปได้ไหม
ฉันพยายามหาวิธีที่ดีในการทำสิ่งนี้มาระยะหนึ่งแล้ว แต่มีเวลายากที่จะหาชิ้นส่วนที่เหมาะสมในการทำเช่นนี้ ฉันเดาว่าสิ่งนี้จะต้องเป็นไปได้ หากต้องการกล่าวอย่างง่าย ๆ นี่คือสิ่งที่ฉันต้องการจะทำให้สำเร็จ: PHP / Other front end -> [SOCKET] -> Locally hosted 'pooler' -> [Pool of persistent TCP/IP connection(s)]-> Externally hosted MySQLD มีเครื่องมือ / วิธีการทำสิ่งต่าง ๆ อยู่หรือไม่? เราต้องการใช้การเชื่อมต่อ mysql แบบคงที่โดยไม่ต้องใช้ mysql_pconnect ฉันถามด้วยความเคารพว่าเราไม่ได้เริ่มพูดคุยเกี่ยวกับวิธีการเชื่อมต่อแบบถาวรไม่จำเป็น ฯลฯ พวกเขาเป็น เราหมดพอร์ต TIME_WAIT และมีปัญหาอื่น ๆ ซึ่งจะแก้ไขได้หากระบบประเภทนี้ถูกนำไปใช้ ดังนั้นใช่เพื่อสรุป ... เราจะใช้ poolq การเชื่อมต่อ mysql ที่ซ็อกเก็ตตามปลายท้องถิ่นและยังคงเชื่อมต่อที่ทำกับ …
12 mysql 

4
ไม่มี NULLs แต่ลำดับไบต์ไม่ถูกต้องสำหรับการเข้ารหัส“ UTF8”: 0x00
ฉันใช้เวลา 8 ชั่วโมงที่ผ่านมาพยายามนำเข้าผลลัพธ์ของ 'mysqldump --compatible = postgresql' ลงใน PostgreSQL 8.4.9 และฉันได้อ่านอย่างน้อย 20 กระทู้ที่แตกต่างกันที่นี่และที่อื่น ๆ เกี่ยวกับปัญหาเฉพาะนี้แล้ว แต่ไม่พบ คำตอบที่ใช้งานได้จริงที่ทำงาน ทิ้งข้อมูล MySQL 5.1.52: mysqldump -u root -p --compatible=postgresql --no-create-info --no-create-db --default-character-set=utf8 --skip-lock-tables rt3 > foo เซิร์ฟเวอร์ PostgreSQL 8.4.9 เป็นปลายทาง กำลังโหลดข้อมูลด้วย 'psql -U rt_user -f foo' กำลังรายงาน (ส่วนใหญ่เป็นหนึ่งในตัวอย่าง): psql:foo:29: ERROR: invalid byte sequence for …

2
ความแตกต่างระหว่างการทำซ้ำแถวและคำสั่งใน MySQL?
ความแตกต่างที่แท้จริงระหว่างการจำลองแบบตามแถวและตามคำสั่งคืออะไร ฉันกำลังมองหาในแง่ของผลกระทบของการจำลองแบบต่อทาส ถ้าฉันใช้การจำลองแบบแบบแถวแล้วจะมีผลกับทาสอย่างไรและถ้าฉันใช้ข้อความที่อิงตามคำสั่งจะมีผลอย่างไร โปรดใช้พารามิเตอร์ต่อไปนี้ในการพิจารณา: replicate-ignore-db and replicate-do-db ขอบคุณ .... !

1
ขนาดฐานข้อมูล MySQL Workbench
ฉันพยายามค้นหาขนาดทั้งหมดในฮาร์ดดิสก์ที่ฐานข้อมูล MySQL Workbench ของฉันใช้อยู่ ไม่มีใครรู้วิธีง่ายๆในการคิดออกนี้ หากไม่มีสิ่งอื่นใดตำแหน่งเริ่มต้น mysql / workbench ใช้สำหรับบันทึกข้อมูลดิบบนเครื่อง windows หรือไม่? ขอบคุณล่วงหน้า! Quintis

2
วิธีกำหนดค่าชุดอักขระทั่วโลกบน MySQL
ฉันพยายามเปลี่ยนชุดอักขระสำหรับ MySQL ของเราผ่านmy.cnfและล้มเหลว ฉันได้เพิ่มการตั้งค่าชุดอักขระตามด้านล่าง: # The MySQL server [mysqld] port = 3306 socket = /var/lib/mysql/mysql.sock skip-locking key_buffer = 16M max_allowed_packet = 1M table_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M # ------------- MYSQL CHARSETS -------------- character_set_system = utf8 character_set_server = …
12 mysql  my.cnf 

5
การนำเข้าไฟล์ SQL ขนาดใหญ่ phpmyadmin
ฉันพยายามนำเข้าไฟล์ SQL นี้ใน phpmyadmin และได้รับข้อความนี้ #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '<br /> <b>Fatal error</b>: Allowed memory size of 134217728 bytes exhausted (tr' at line 1 ฉันต้องทำอย่างไรในการนำเข้านี้
12 php  mysql  phpmyadmin 

2
อะไรคือสาเหตุที่โฮสต์ 'host_name' ถูกบล็อกใน MySQL?
เมื่อฉันใช้รหัสผ่านที่ไม่ถูกต้องเพื่อเชื่อมต่อกับเซิร์ฟเวอร์ mysql และจำนวนการทดสอบอยู่เหนือmax_connect_errorsและฉันพบว่าAborted_connectsมันจะเกิดขึ้นเช่นเดียวกับการนับฉันทดสอบ แต่โฮสต์ยังคงไม่ถูกบล็อก เพื่อไม่Aborted_connectsมากกว่าmax_connect_errorshost_name แล้วถูกบล็อก?
12 mysql 

2
แบบสอบถามทั้งสองนี้จะส่งผลให้เกิดการหยุดชะงักหากดำเนินการตามลำดับหรือไม่
นี่เป็นสาเหตุของคำถามอื่น ๆ ของฉันแต่ฉันคิดว่ามันคุ้มค่าที่จะแยกทั้งสองออกจากกันเนื่องจากฉันมีสมมติฐานตามบันทึกต่อไปนี้ที่ฉันชอบที่จะปลอมแปลงหรือตรวจสอบ สมมติฐานของฉันคือว่าการหยุดชะงักอื่น ๆเป็นผลมาจากการสอบถามต่อไปนี้โดยมีการซ่อนแบบสอบถามดั้งเดิมที่อยู่บนพื้นฐานของความเข้าใจของฉันสถานะ Innodb แสดงเฉพาะธุรกรรมล่าสุด (ถูกต้องหรือไม่) จากบันทึกฉันได้ตรวจสอบรหัสของเราและพบว่ามีการค้นหาสองรายการต่อไปนี้ตามลำดับ: db.Execute("UPDATE people SET iphone_device_id=NULL WHERE iphone_device_id=@0 AND people_id<>@1", DeviceID, m_User.people_id); // I have hard coded this query in this snippet to simplify things db.Execute("UPDATE people SET company_id = 444, name = 'Dad', password = '<pass>', temp_password = NULL, reset_password_hash = NULL, …

4
การติดตั้ง MySQL Tables เริ่มต้นใน Windows (mysql_install_db)
ใน Linux ตาราง MySQL อนุญาตเริ่มต้นสามารถสร้างด้วยmysql_install_dbสคริปต์ได้ แต่ใช้ไม่ได้กับ Windows ตารางการให้สิทธิ์เริ่มต้นสามารถติดตั้งบน Windows ได้อย่างไร (ไม่ฉันไม่ต้องการคำตอบที่ว่าผลลัพธ์ของ Google นั้นเต็มไปด้วยวิธีการติดตั้งบน Windows โดยอัตโนมัติเพราะนั่นเป็นเพียงกรณีที่มีการกระจายตัวติดตั้งไม่ใช่แพ็คเกจ ZIP นอกจากนี้ไม่ได้ช่วยอะไร ติดตั้ง MySQL และไดเรกทอรีข้อมูลเสียหายหรือถูกแทนที่หรือเช่นนั้น)

3
ชนิดข้อมูล MySQL สำหรับจำนวนเต็ม 128 บิต
ฉันต้องการจัดเก็บจำนวนเต็ม 128 บิตที่ไม่มีเครื่องหมายใน MySQL และฉันสงสัยว่าประเภทข้อมูลที่ดีที่สุดในการจัดเก็บจำนวนมากนั้นคืออะไร ตอนนี้ผมใช้แต่ที่เกี่ยวข้องกับหลายฟังก์ชั่นแปลงbinary(16)pack(/huge number in hex .../) มีประเภทข้อมูลที่ดีที่สุดในการจัดเก็บจำนวนเต็ม 128 บิตที่ไม่ได้ลงชื่อ?
12 mysql  datatypes 

5
มีเครื่องมือการเปรียบเทียบ MySQL หรือไม่ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับผู้ดูแลฐานข้อมูล Exchange Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันได้ยินมานานแล้วว่ามีเครื่องมือนี้ที่ช่วยให้คุณทวีค่า mysql เพื่อประสิทธิภาพที่ดีขึ้น แต่ฉันไม่สามารถหามันได้เลย ฉันรู้ว่าฉันสามารถใช้ ab สำหรับ apache เพื่อจำลองการรับส่งข้อมูลสูงและมันจะสร้างบันทึกที่ช้า อย่างไรก็ตามหากเกิดปัญหา (เกิดขึ้นแล้วและอยู่ในโหมดการผลิต) ฉันไม่รู้ว่าทำไมจึงเกิดข้อขัดข้องและหากสามารถขัดข้องจากการกำหนดค่าได้

4
เป็นไปได้หรือไม่ว่าคำสั่งนั้นจะไม่รับประกันสำหรับตารางที่ซ้ำซ้อนนี้
ฉัน stumbled เมื่อคำถามนี้ในการสนทนา Twitter กับ Lukas เอ๊ด แม้ว่าพฤติกรรมที่ถูกต้องจะใช้คำสั่งย่อย ORDER BY กับการสืบค้นนอกสุดเนื่องจากที่นี่เราไม่ได้ใช้ DISTINCT, GROUP BY, JOIN หรือส่วนคำสั่ง WHERE ใด ๆ ในการค้นหานอกสุดทำไม RDBMS ถึงไม่ผ่าน ข้อมูลที่เข้ามาในขณะที่มันถูกจัดเรียงตามแบบสอบถามภายใน? SELECT * FROM ( SELECT * FROM table ORDER BY time DESC ) AS t เมื่อเรียกใช้ตัวอย่างนี้บน PostgreSQL อย่างน้อยคุณจะได้รับแผนการดำเนินการเดียวกันสำหรับทั้งแบบสอบถามภายในและตัวอย่างตารางที่ได้รับนี้รวมถึงชุดผลลัพธ์เดียวกัน ดังนั้นฉันจะสมมติว่าผู้วางแผนจะยกเลิกการสืบค้นนอกสุดเพียงเพราะซ้ำซ้อนหรือเพียงแค่ส่งผ่านผลลัพธ์จากตารางด้านใน ไม่มีใครคิดว่านี่อาจเป็นกรณีหรือไม่

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