MySQL 5.5 и MariaDB5.5 возвращают разное количество столбцов для одного и того же данные и тот же запрос выбора?

Я искал в сети какое-то время и не могу найти ответа по этому делу. Буду очень признателен, если я могу получить совет. Вот вкратце проблема.

У нас есть 2 сервера. Один работает с 12 ядрами процессора и оперативной памятью 24 ГБ на centos6 / mysql5.5, а номер два - с 24 ядрами процессора и оперативной памятью 32 ГБ на centos7 / mariadb5.5. У обоих одинаковые данные в базе данных; он был продублирован с помощью mysqldump из mysql55 и импортирован в mariadb5.5. Конфигурация для mysql и mariadb также была скопирована из меньшей системы в большую; он буквально идентичен.

Первая проблема - когда они подвергаются одинаковой нагрузке; mysql5.5 работает, как ожидалось, с load avrg. примерно от 4 до 8; mariadb5.5 очень плохо работает при средней загрузке от 700 до 900. Команда "показать список процессов" в системе mariadb обнаруживается множество соединений, работающих долгое время более 5 минут и находящихся в состоянии «Копирование в таблицу tmp». Те же запросы видны в меньшей системе mysql5.5, но они выполняются за 1-2 секунды.

Я пробовал запустить maraidb с tmpdir, созданным на большом разделе оперативной памяти. Это снизило нагрузку, но ненамного, она в конечном итоге вернулась к 700.

Во-вторых, я заметил, что если я все-таки объясню по одному из длительных запросов, запрос из mysql вернет около 3 тыс. Строк, а другой сервер - то же самое. по тому же запросу возвращает около 7 тыс. строк.

Я не уверен, чем это вызвано. В запросах преобладает "выбор" с несколькими "и" и "или".

Спасибо за уделенное время. Я был бы признателен за любой вклад по этому поводу.

0
задан 20 July 2016 в 00:26
2 ответа
[११4777373 some] यापुढे दोन्ही प्रणाल्यांविरूद्ध काही प्रदीर्घ चालू असलेल्या क्वेरींच्या स्पष्टीकरणाची तुलना केल्यावर मला आढळले की सर्व्हर मारियाडब कार्यरत असताना जॉईन_बफर वापरत नव्हता. [१२79]] जेव्हा मी संभाव्य कारण शोधत असता मला हा चल आढळला: [१२80०] https://mariadb.com/kb/en/mariadb/server-system-variables/#join_cache_level

हे 8 वरून बदलल्यानंतर निश्चितच डीफॉल्ट 2; म्हणून आम्ही डीबीएमएसला ब्लॅक-आधारित अल्गोरिदम जास्त निवडण्यास परवानगी देतो जो जॉईन ऑपरेशन्स करताना प्रत्येक गोष्ट कार्य करण्यास प्रारंभ करते तेव्हा निवडू शकते. मी डीबी तज्ञ नाही आणि या कारवाईमुळे काय परिणाम होऊ शकतात याची मला पूर्णपणे खात्री नाही. मला आठवते की मेमरी फूटप्रिंटमध्ये वाढ होईल परंतु कार्यप्रदर्शनानुसार बॉक्स "उडता" येईल. लोडची सरासरी आता 1200 वरून 5 वर खाली आली आहे [१२82२] माझे प्रकरण काहीसे वेगळं झाल्यासारखे दिसत आहे कारण मी चालवित असलेला अनुप्रयोग एकाधिक जॉइनसह काही फार लांब निवडी करीत आहे. परंतु माझ्या अंदाजानुसार वर्गाच्या कोणत्याही वर्गाचे समान भार असणार्‍या कोणत्याही मायक्रेल ते मारीएडबी संक्रमणासाठी समान असेल.

2
ответ дан 4 December 2019 в 13:39

Я использую mariadb 10 под Linux Centos 7. Это хорошо работает, потому что по умолчанию база данных хранит каждую таблицу для каждого файла и индексы для другого файла. Убедитесь, что вы создаете индексы для полей, которые используются в предложениях «where» и «join on». Правильный выбор полей для индексов может повысить производительность более чем в 100 раз. Как установить mariadb 10 на Centos 7 вы можете найти там https://mariadb.com/kb/en/mariadb/yum/

0
ответ дан 4 December 2019 в 13:39

Теги

Похожие вопросы