MySQL и charset latin1

Post Reply
magicum
Posts: 351
Joined: Mon Nov 18, 2013 11:27 am

MySQL и charset latin1

Post by magicum »

Здравствуйте.

Имеются несколько ресурсов, в которых сами базы много кочевали между версиями MySQL с незапамятных времен. Очень вероятно, что еще с 4 версии.
Как бы там ни было, чарсет там стоял и стоит latin1, хотя языки внутри разные, есть и русский и азиатские.

Дальше только догадки, хочется их прояснить.

Сейчас работает все нормально, в смысле тексты отображаются ок.
Хотя на выходе, судя по хедерам отдается всё в utf8, как и любят браузеры.

Так вот, базы огромные, нагрузка приличная.

Я знаю, как все эти базы перекодировать нормально в utf8, но это займёт много времени, и хотелось бы узнать, много ли нагрузки добавляет PHP когда читает из базы в latin1 а отдаёт веб серверу в utf8 ?

Причем в этих базах бывает так, что:
в базе дефолт стоит utf8, а у таблицы - latin1
или даже у таблицы - utf8, а у поля - latin1

Я читал, что при таком раскладе как минимум могут быть проблемы с поиском и сортировкой.
А с нагрузкой?
Базы по 10-15гигов.
admin
Site Admin
Posts: 37994
Joined: Wed Sep 10, 2008 11:43 am

Re: MySQL и charset latin1

Post by admin »

Приветствую!

пхп ничего не перекодирует, просто что отдает база то и выводит

а вот влияет ли это как-то на нагрузку мускла - я не тестировал, просто не касался этого вопроса
но думаю что оптимизация сложных запросов \ инедксов принесет больше пользы, чем кодировки

думаю что например если прибить индексы которые не используются - уже будет буст больше чем любая кодировка
Don't forget to run script update
magicum
Posts: 351
Joined: Mon Nov 18, 2013 11:27 am

Re: MySQL и charset latin1

Post by magicum »

Здесь есть затруднения.
Можно конечно грохнуть все индексы, которые выведет:

Code: Select all

select * from sys.schema_unused_indexes;
но как-то это неправильно, мне кажется.
admin
Site Admin
Posts: 37994
Joined: Wed Sep 10, 2008 11:43 am

Re: MySQL и charset latin1

Post by admin »

Ситуация такая:

например, если сайт только с сортиоовкой по ЦТР то индекс по дате не надо
если нет сортировки по duration - тоже не надо
но например если есть страницы типа duration + category_id то имеет смысл добавить этот индекс
и тп , не ничего необычного)

но если добавить все вероятные индексы по дефолту то каждое обновление цтр (а оно каждую минуту) будет перестраивать кучу индексов = нагрузка

Учитывая, что создать индекс - дело пары минут, то я не вижу проблем с тем, что б поэкспериментировать с индексами
смотрим нагрузку, добавляем\убираем что-то , сравниваем
что-то пошло не так - просто вернули индекс и тп

можно так же пройтись MySQLTuner , может он скажет что-то полезное
Don't forget to run script update
Post Reply