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

MySQL เวอร์ชั่น 5.5 - โปรดติดแท็กด้วย mysql เพื่อวัตถุประสงค์ในการค้นหา

2
เราสามารถทำอะไรใน MySQL 5.0 Replication เพื่อจัดการกับปัญหาแบนด์วิดท์?
ฉันกำลังพัฒนาแอพพลิเคชั่นให้ทำงานบนไคลเอนต์พีซี (Win) ซึ่งได้รับการกำหนดค่าด้วยอินสแตนซ์ของเซิร์ฟเวอร์ MySQL 5.1 ที่จะทำหน้าที่เป็นสลาฟแบบอ่านอย่างเดียวไปยังต้นแบบระยะไกล ต้นแบบระยะไกลมีสกีมาหลายสิบ แต่ฉันต้องการเพียงหนึ่งต่อไคลเอนต์ดังนั้นฉันให้การตั้งค่าการจำลองแบบ - do-dbใน my.ini เพื่อทำซ้ำสคีมาที่ลูกค้าต้องการเท่านั้น การจำลองแบบใช้งานได้ แต่เมื่อลูกค้าของเราเข้าสู่ภูมิภาคต่างๆของโลกที่มีการเข้าถึงอินเทอร์เน็ตผ่านเครือข่ายไร้สาย 3G เท่านั้นซึ่งเรียกเก็บตามการใช้ข้อมูลลูกค้าจะเกินขีด จำกัด แผนข้อมูลของพวกเขาอย่างรวดเร็วและประสบปัญหาราคาแพง ดังที่ฉันเข้าใจแล้ว MySQL จะเขียนธุรกรรมทั้งหมดสำหรับสกีมาทั้งหมดลงในไฟล์ binlog ไฟล์เดียวซึ่งหมายความว่าไคลเอนต์แต่ละคนจะต้องดาวน์โหลดธุรกรรมทั้งหมดที่ดำเนินการกับทุกสกีมาบนมาสเตอร์แล้วดาวน์โหลดเมื่อใช้ตัวกรองฐานข้อมูลต่อการจำลองแบบการตั้งค่าdo-dbในไฟล์ my.ini ของลูกค้า เพื่อลดความไร้ประสิทธิภาพนี้ฉันได้ใช้การตั้งค่าslave_compressed_protocol = 1ซึ่งดูเหมือนว่าจะลดข้อมูลที่ส่งลง 50% แต่ก็ยังทำให้ลูกค้าของเราเกินขีด จำกัด ข้อมูลที่รวดเร็วขึ้นในบิล 3G ฉันไม่สามารถจินตนาการได้ว่าฉันเป็นเพียงคนเดียวที่พบสิ่งนี้ดังนั้นฉันแน่ใจว่าฉันจะได้รับคำตอบมากมายเกี่ยวกับวิธีการบรรลุเป้าหมายนี้โดยการตั้งค่า x = y อย่างไรก็ตามฉันไม่พบเอกสารของการตั้งค่าดังกล่าวหรือวิธีการที่แนะนำให้ใช้ จนถึงตอนนี้นี่เป็นความคิดของฉันในการแก้ปัญหาที่เป็นไปได้โปรดให้ข้อเสนอแนะหรือเส้นทางอื่น: ตั้งค่าทาส "พร็อกซี" สำหรับแต่ละสคีมา (ในกล่องอื่นหรือกล่องเดียวกันกับอินสแตนซ์ / พอร์ต MySQL อื่น) กำหนดค่าพร็อกซี slave เพื่อทำซ้ำ-do-db …

2
ฉันควรเพิ่ม max_connections ใน AWS RDS t1-micro สำหรับ MySQL หรือไม่
ฉันมี AWS RDS t1-micro ที่ใช้งาน MySQL 5.5 มันทำให้ฉันมีข้อผิดพลาดในการเชื่อมต่อมากเกินไป ฉันตรวจสอบแล้วและอนุญาตการเชื่อมต่อสูงสุด 34 รายการพร้อมกัน สิ่งที่ฉันได้อ่านคือฉันสามารถเพิ่มค่าสูงสุดนี้ได้โดยการสร้างกลุ่มพารามิเตอร์ DB สำหรับอินสแตนซ์ Micro นี้ ความสับสนของฉันคือ ฉันควรเพิ่มค่าการเชื่อมต่อสูงสุดสำหรับไมโครในกลุ่มพารามิเตอร์ DB หรือไม่ หรือฉันควรพิจารณาอัปเกรดเป็นระดับ RDS ถัดไปซึ่งให้การเชื่อมต่อสูงสุด (125)? ฉันควรเพิ่ม max_connections บน micro RDS เป็น 125 เทียบกับการอัพเกรดเป็นอินสแตนซ์ขนาดเล็ก RDS หรือไม่? เหตุใดและปัจจัยใดที่ฉันควรตัดสินใจ ขอบคุณ

2
ตาราง mysql ที่มีประสิทธิภาพ / การออกแบบดัชนีสำหรับ 35 ล้านแถว + ตารางโดยมี 200+ คอลัมน์ที่เกี่ยวข้อง (สองเท่า) การรวมกันใด ๆ ที่อาจมีการสอบถาม
ฉันกำลังมองหาคำแนะนำในการออกแบบตาราง / ดัชนีสำหรับสถานการณ์ต่อไปนี้: ฉันมีตารางขนาดใหญ่ (ข้อมูลประวัติราคาหุ้น InnoDB 35 ล้านแถวและเพิ่มขึ้น) ด้วยคีย์หลักผสม (assetid (int) วันที่ (วันที่) นอกเหนือจากข้อมูลการกำหนดราคาแล้วฉันมี 200 ค่าสองเท่าที่จำเป็นต้องสอดคล้องกับแต่ละระเบียน CREATE TABLE `mytable` ( `assetid` int(11) NOT NULL, `date` date NOT NULL, `close` double NOT NULL, `f1` double DEFAULT NULL, `f2` double DEFAULT NULL, `f3` double DEFAULT NULL, `f4` double DEFAULT NULL, ... skip …

2
ไม่มีการใช้ดัชนีคีย์หลักที่มี DATETIME เนื่องจากส่วนแรกของคีย์ผสม
ฉันมีปัญหากับการทำดัชนีเวลา (หรือแม้กระทั่งวันที่) เป็นส่วนแรกของคีย์หลักของฉัน ฉันใช้ MySQL 5.5 นี่คือสองตารางของฉัน: -- This is my standard table with dateDim as a dateTime CREATE TABLE `stats` ( `dateDim` datetime NOT NULL, `accountDim` mediumint(8) unsigned NOT NULL, `execCodeDim` smallint(5) unsigned NOT NULL, `operationTypeDim` tinyint(3) unsigned NOT NULL, `junkDim` tinyint(3) unsigned NOT NULL, `ipCountryDim` smallint(5) unsigned NOT …

2
ความหมายของ tinyint (N) คืออะไร?
เมื่อเราใช้ความยาวอาร์กิวเมนต์กับชนิดข้อมูลตัวเลขเท่าที่ฉันรู้ว่าสิ่งนี้ระบุความกว้างของการแสดงผล ฉันพยายามต่อไปนี้: mysql> create table boolean_test (var1 boolean, var2 tinyint); Query OK, 0 rows affected (0.10 sec) mysql> show create table boolean_test; +--------------+------------------------- | Table | Create Table +--------------+------------------------- | boolean_test | CREATE TABLE `boolean_test` ( `var1` tinyint(1) DEFAULT NULL, `var2` tinyint(4) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +--------------+--------------------------- …

4
การเปิดและปิดการเชื่อมต่อฐานข้อมูลมีค่าใช้จ่ายเท่าใด
ซีพียูเข้มข้นเปิดและปิดการเชื่อมต่อฐานข้อมูล (สำหรับเว็บแอป) ใน MySQL อย่างไร ... เมื่อซอฟต์แวร์ DB อยู่บน localhost ... เมื่อซอฟต์แวร์ DB อยู่ในเครื่องอื่น

2
สิ่งที่ max_allowed_packet มีขนาดใหญ่พอและทำไมฉันต้องเปลี่ยนมัน?
ฉันมี MySQL (5.5) ในการตั้งค่า master-slave และสร้างเซิร์ฟเวอร์ทาสอื่น ฉันหยุดทาสต้นฉบับทิ้งข้อมูลคัดลอกและนำเข้าอีกครั้งและทำงานได้ดี ฉันสังเกตเห็น master_log pos ของสลาฟดั้งเดิมและใช้คำสั่งเหล่านี้เพื่อตั้งค่าสลาฟใหม่ CHANGE MASTER TO MASTER_HOST='<ipaddress>', MASTER_USER='<username>', MASTER_PASSWORD='<password>', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000851', MASTER_LOG_POS=15824150, MASTER_CONNECT_RETRY=10; เมื่อฉันเริ่มทาสใหม่ที่ฉันได้รับ Last_IO_Error: มีข้อผิดพลาดร้ายแรง 1236 จากต้นแบบเมื่ออ่านข้อมูลจากบันทึกไบนารี: 'รายการบันทึกเหตุการณ์เกิน max_allowed_packet; เพิ่ม max_allowed_packet ในต้นแบบ ' อย่างไรก็ตามเมื่อฉันเริ่มต้นทาสดั้งเดิมมันก็ไม่เป็นไรและตอนนี้ก็กำลังซิงค์กันอยู่ ดังนั้นคำถาม: ค่าปัจจุบันคือ 16M ฉันจะรู้ได้อย่างไรว่าใหญ่แค่ไหน (ฉันค่อนข้างจะหลีกเลี่ยงการลองผิดลองถูกกับเซิร์ฟเวอร์ที่ใช้งานจริง) ทำไมฉันต้องเพิ่มมูลค่าให้กับนายเมื่อทาสดั้งเดิมถูกจัดการได้ดีปัญหาอาจจะเป็นกับทาสใหม่ได้หรือไม่ ปรับปรุง ฉันเพิ่ม max_allowed_packet เป็น 1073741824 ตามที่ Rolando แนะนำไว้กับเจ้านายทาสเก่าและทาสใหม่และเริ่มต้นใหม่ ( SET GLOBAL …


2
การนับแถวจากแบบสอบถามย่อย
ง่าย: ฉันต้องการนับจำนวนแถวจากแบบสอบถามย่อย โปรดทราบว่าสถานะนั้นไม่ว่าโฮสต์จะออนไลน์หรือไม่ รหัสไม่ถูกต้อง SELECT COUNT(ip_address) FROM `ports` ( SELECT DISTINCT ip_address FROM `ports` WHERE status IS TRUE ) อธิบาย แบบสอบถามแรกเมื่อรันด้วยตนเองจะส่งคืนสิ่งนี้: SELECT DISTINCT ip_address FROM `ports` WHERE status IS TRUE ip_address 192.168.1.1 192.168.1.2 192.168.1.248 192.168.1.251 192.168.1.254 เคียวรีที่สองรันด้วยตนเองส่งคืนสิ่งนี้: SELECT COUNT(ip_address) FROM `ports` 17 คำถาม ฉันต้องการทราบวิธีนับรายการที่อยู่ IP 5 รายการนั้น ฉันกำลังค้นหาวิธีแก้ไขปัญหาแบบออนไลน์ที่เป็นไปได้ทางออนไลน์และเพิ่งเริ่มรู้สึกหงุดหงิดดังนั้นฉันจึงถามผู้เชี่ยวชาญ

4
MySQL: จะสร้างคอลัมน์ได้อย่างไรถ้าไม่มีอยู่?
ฉันกำลังพยายามสร้างคอลัมน์สำหรับตารางของฉันหากไม่มีอยู่จริง ฉันค้นคว้ามาเยอะ แต่ยังหาทางออกไม่ได้ นี่เป็นไปได้จริง ๆ ที่จะสร้างคอลัมน์แบบมีเงื่อนไขหรือไม่

1
การเปิดใช้งาน“ log_queries_not_using_indexes” ปิดใช้งาน“ long_query_time” หรือไม่
ผมสังเกตเห็นว่าใน Mysql เมื่อเปิดใช้งานlog_queries_not_using_indexes, slow_query_logและไฟล์บันทึกแบบสอบถามสร้างช้าจะมีจำนวนมากของคำสั่งแม้ว่าเวลาแบบสอบถามน้อยกว่าlong_query_timelong_query_time ดูเหมือนว่าเมื่อlog_queries_not_using_indexesเปิดใช้งานแล้ว Mysql จะบันทึกการสืบค้นทั้งหมดที่ไม่ได้ใช้ดัชนีไม่ว่า "long_query_time" นั้นคืออะไร มีวิธีที่จะเอาชนะสิ่งนี้หรือไม่? ฉันหมายถึงมีวิธีบันทึกข้อความค้นหาทั้งหมดที่ใช้เวลานานกว่าlong_query_timeไม่ว่าจะใช้ดัชนีหรือไม่

1
การลบบันทึก bin ในสภาพแวดล้อมการจำลองแบบ
ฉันมีคำถามเกี่ยวกับการลบบันทึกแบบไบนารีในสภาพแวดล้อมการจำลองแบบ: เรามีสภาพแวดล้อมที่มี 1 master และ 2 slaves (กำลังเรียกใช้ mysql 5.5) บางครั้งเราพบปัญหาเกี่ยวกับพื้นที่ระหว่างการประมวลผลครั้งใหญ่โดยที่ bin log directory เต็ม บันทึกหมดอายุทุก 3 วัน ฉันสงสัยว่ามีเหตุผลหรือไม่ที่จะต้องเก็บบันทึกไว้เป็นเวลา 3 วันในกล่องทั้งหมด - ผู้เชี่ยวชาญและทาสทั้งสอง? ยกตัวอย่างเช่นการเก็บบันทึกเป็นเวลา 3 วันสำหรับต้นแบบ แต่สำหรับทาส 1 วัน วิธีที่ดีที่สุดที่จะไปเกี่ยวกับมันคืออะไร? ขอขอบคุณ!

2
คุณจะลบการกระจายตัวของข้อมูลจากตาราง InnoDB ได้อย่างไร
ฉันมีฐานข้อมูลที่มีจำนวนตาราง ฉันต้องการลบบางระเบียนออกจากตารางว่าไม่มีระเบียนมากกว่า 20K หรือ 50K ตารางทั้งหมดเป็น InnoDB และfile_per_tableเป็นปิด เมื่อฉันจะลบระเบียนจากตารางจำนวนหนึ่งจะมีการกระจายตัวในตาราง มีวิธีใดที่จะกำจัดการแตกแฟรกเมนต์ อัพเดทเมื่อวันที่ 17 เมษายน mysql> select TABLE_NAME, TABLE_SCHEMA, Data_free from information_schema.TABLES where TABLE_SCHEMA NOT IN ('information_schema', 'mysql') and Data_Free >0; +-----------------+--------------+-----------+ | TABLE_NAME | TABLE_SCHEMA | Data_free | +-----------------+--------------+-----------+ | City | world_innodb | 5242880 | | City_Copy | world_innodb | …

2
วิธีที่เร็วที่สุดในการเปลี่ยนประเภทข้อมูลคีย์ดัชนีที่จัดทำตาราง 600GB จาก INT เป็น BIGINT
ฉันต้องการเปลี่ยนประเภทข้อมูลจาก INT เป็น BIGINT ในตาราง MySQL 600GB คอลัมน์มีดัชนีที่ไม่ซ้ำกัน ฉันอาจจะดีกับ INT ที่ไม่ได้ลงนาม แต่ฉันคิดว่าการเปลี่ยนแปลงนั้นมิฉะนั้น BIGINT จะเจ็บปวดเหมือนกัน เอ็นจิ้นของตารางคือ InnoDB อะไรจะง่ายขึ้น: แก้ไขตาราง โครงสร้างการคัดลอกและ INSERT INTO (SELECT *) ตารางการดัมพ์และการเปลี่ยนนิยามตารางไฟล์ดัมพ์ มีอะไรอีกไหม ปรับปรุง: ตามที่ร้องขอ MySQL เวอร์ชั่น 5.5.15 ไม่มีคีย์ต่างประเทศและสร้างตาราง: CREATE TABLE `tbl` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `created_at` datetime NOT NULL, `tid` bigint(20) …


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