Помощь - Поиск - Пользователи - Календарь
Полная версия: КОдировка БД, ВДС
Онлайн-форум hostobzor.ru > Архив (темы до 1.06.2015). Только для чтения. > Коммерческий хостинг. Общие форумы > Виртуальный сервер и Виртуальный Выделенный Сервер
ProstoBIN
Знаю что тема заезженная и всеравно постоянно сталкиваюсь с этой проблемой, теперь в ВДС

Распишу что и как делал и какие проблемы были:


Старый шаред хостинг:
# Версия сервера: 5.1.15-beta-log
# MySQL-кодировка: UTF-8 Unicode (utf8)

Новый ВДС:
# Версия сервера: 5.0.51a
# MySQL-кодировка: UTF-8 Unicode (utf8)

на шареде и на вдс сопастоновление utf8_unicode_ci
в таблицах и там и там cp1251_general_ci

Делаю дамп и заливаю с помощью скрипта dumper

И там и там все по русски в phpmyadmin-е

как только обновляется ДНС домена на сайте появляются вопросы blink.gif

менял сопастоновление , менял в таблицах сравнения,перебрал все варианты, ничего не помагает :-(

при добавлений записей с помощью скриптов были следуюшие моменты: в майадмине вопросы в кодировке cp1252 o_O на сайте отображается нормально, и там и там вопросы, в майдамине по русски на сайте вопросы

Решил по эскпериминтировать, заливаю различные чистые скрипты, создаю отдельную базу данных в cp1251, везде пропиывается cp1251 (таблицы и сопастоновление)

Запускаю скрипты install.php и к моему удивление получаю в в майадмине вопросы и на сайте вопросы, добавляю запись, и всеравно и там и тут вопросы о_О

Ну не буду же я при каждой установке нового сайта в конфигах скриптов прописывать SET NAME cp1251

MySQL-кодировка: UTF-8 Где его изменять я не нашел
имхо если его сменить на cp1251, в конфигах скриптов ничего прописывать не придеться!!
Вопрос: Как это сделать???
eSupport.org.ua
Сделайте дамп с указанием явной кодировки cp1251 но с сбросом указания кодировки в дампе
Сделайте смену кодировки в юникод (iconv) всех дампов
Залейте на новый сервер и пользуйтесь юникодом
Скрипты будут работать без проблем, уже проверял много раз

gylys
Цитата(eSupport.org.ua @ 24.08.2008, 07:23) *

Сделайте дамп с указанием явной кодировки cp1251 но с сбросом указания кодировки в дампе


Да, и возвращаемся в конец XX века с таким ходом. Забыть надо все 8 битовые кодировки как страшный кошмар.

Поправить пхп скрипт надо в этом случае, возможно пересмотреть php.ini
eSupport.org.ua
gylys, читайте внимательно что я советую делать. А то у Вас реакция идет не по смысловому содержанию а на ключевые слова smile.gif


ProstoBIN
Цитата(gylys @ 24.08.2008, 12:35) *

Поправить пхп скрипт надо в этом случае, возможно пересмотреть php.ini

Мне потом при каждой установке новых скриптов в них прописывать кодировки??? я хочу починить мускуль, чтобы по умолчанию при установке скриптов и там и там было по русски!! неужели никто не знает???
edogs
Цитата(ProstoBIN @ 24.08.2008, 17:01) *

Мне потом при каждой установке новых скриптов в них прописывать кодировки??? я хочу починить мускуль, чтобы по умолчанию при установке скриптов и там и там было по русски!! неужели никто не знает???
А проблема-то в чем? При каждой установке скрипта Вы указываете логин к базе, пароль к базе, хост базы, создаете саму базу... одно лишнее действие потратить на то, что бы указать кодировку так трудно что-ли?

gylys, Вам для информации - БД с русским текстом в утф8 будет занимать в 2 раза больше места, чем та же БД в cp1251. Не всегда надо гнаться за модой с утф8 только потому, что этот утф8 распиарили.
ProstoBIN
Цитата(edogs @ 24.08.2008, 18:48) *

А проблема-то в чем? При каждой установке скрипта Вы указываете логин к базе, пароль к базе, хост базы, создаете саму базу... одно лишнее действие потратить на то, что бы указать кодировку так трудно что-ли?

gylys, Вам для информации - БД с русским текстом в утф8 будет занимать в 2 раза больше места, чем та же БД в cp1251. Не всегда надо гнаться за модой с утф8 только потому, что этот утф8 распиарили.

указываю логине к базе, пароле к базе, хосте базы, жму кнопку инстал, вуаля! на сайте вопросы! в мускуле вопросы!! и это все при cp1251, и при том что сама кодировка MYSQL UTF-8(НЕ ПУТАТЬ С ДАМПАМИ) КАК ЕЕ СМЕНИТЬ?? sad.gif sad.gif sad.gif sad.gif sad.gif sad.gif sad.gif sad.gif
eSupport.org.ua
edogs, вы знаете как mysql работает с памятью?

edogs
Цитата(eSupport.org.ua @ 24.08.2008, 19:01) *
edogs, вы знаете как mysql работает с памятью?
Мы знаем что для личных вопросов существует личка. А Ваши безграмотные попытки подколоть нас в разных топиках уже достаточно нас утомили, что бы больше на них не реагировать.


Цитата(ProstoBIN @ 24.08.2008, 19:00) *

указываю логине к базе, пароле к базе, хосте базы, жму кнопку инстал, вуаля! на сайте вопросы! в мускуле вопросы!! и это все при cp1251, и при том что сама кодировка MYSQL UTF-8(НЕ ПУТАТЬ С ДАМПАМИ) КАК ЕЕ СМЕНИТЬ?? sad.gif sad.gif sad.gif sad.gif sad.gif sad.gif sad.gif sad.gif
До инсталла, в скрипте сразу после соединения с БД и выбора БД попробуйте дописать
mysql_query("set names cp1251");

По поводу "как сменить", ну, вряд ли Вам это поможет, но раз спрашиваете. Заходите в phpmyadmin, выбираете БД, выбираете "Операции", там внизу будет "Сравнение" - выбираете какое нужно. Если мы правильно поняли вопрос о том, что Вы хотите сменить.
ProstoBIN
Цитата(edogs @ 24.08.2008, 19:16) *

До инсталла, в скрипте сразу после соединения с БД и выбора БД попробуйте дописать
mysql_query("set names cp1251");

? фиг с ним с дампом! оставлю на старом хостинге или пропишу mysql_query("set names cp1251");

устал уже повторять!!! Почему на других хостингах ничего прописывать в скриптах не нужно?? А все потому что у них все грамотно настроено! Почему у них при инсталяции и таблицы в пхпмайадмине и сайт на русском?

Почему я должен теперь прописывать в скриптах mysql_query("set names cp1251");
edogs
Цитата(ProstoBIN @ 24.08.2008, 19:21) *
устал уже повторять!!! Почему на других хостингах ничего прописывать в скриптах не нужно?? А все потому что у них все грамотно настроено! Почему у них при инсталяции и таблицы в пхпмайадмине и сайт на русском?
Потому что у Вас ВДС, а не вирт.хостинг.
А ВДС это такая штука, где всё должны на сервере "грамотно настраивать" Вы, а не "кто-то там", в отличии от виртуального хостинга.
Поэтому "у них" грамотно настроено", а "у Вас" нет... потому что Вы "грамотно не настроили".
К сожалению как настроить это "грамотно в конфиге mysql на вдс" мы не знаем, это знает eSupport напримерsmile.gif Пытайте егоsmile.gif Мы только по скриптам.
Цитата(ProstoBIN @ 24.08.2008, 19:21) *
Почему я должен теперь прописывать в скриптах mysql_query("set names cp1251");
Ну для совместимости это вообще нигде не помешает.
ProstoBIN
Цитата(edogs @ 24.08.2008, 19:16) *


По поводу "как сменить", ну, вряд ли Вам это поможет, но раз спрашиваете. Заходите в phpmyadmin, выбираете БД, выбираете "Операции", там внизу будет "Сравнение" - выбираете какое нужно. Если мы правильно поняли вопрос о том, что Вы хотите сменить.

я уже стопитцот раз там менял кодировки, и цп1251 и утф, даже латин1,

когда заходишь в PHPmyADMIN в приветсвующей странице есть надпись: Кодировка MySQL: UTF-8 - как ее сменить?

Цитата(edogs @ 24.08.2008, 19:23) *

Потому что у Вас ВДС, а не вирт.хостинг.
А ВДС это такая штука, где всё должны на сервере "грамотно настраивать" Вы, а не "кто-то там", в отличии от виртуального хостинга.
Поэтому "у них" грамотно настроено", а "у Вас" нет... потому что Вы "грамотно не настроили".

Вот именно! и я об этом! Что я делаю? прошу совета как его настроить?!? blink.gif вроде клуб хостеров здесь а как сменить мускульную кодировку никто не знает blink.gif ohmy.gif
ProstoBIN
АХахахаха, я забыл об одной простой вещи, ПЕРЕЗАГРУЗИСЬ laugh.gif laugh.gif laugh.gif У меня истерика!!! я плакалъ

конфиги исправлял, менял кодировки, ставил принудительную отдачу и принятие данных в сп1251, а все что нужно было - это перезагрузить ВДС!!!! ААААААААА

Тему плиз делете
gylys
Цитата(eSupport.org.ua @ 24.08.2008, 15:46) *

gylys, читайте внимательно что я советую делать. А то у Вас реакция идет не по смысловому содержанию а на ключевые слова smile.gif


Не указали, что в дампе надо поменять cp1251 на utf8 по этому я и зациклился, сори biggrin.gif

Цитата(edogs @ 24.08.2008, 18:48) *


gylys, Вам для информации - БД с русским текстом в утф8 будет занимать в 2 раза больше места, чем та же БД в cp1251. Не всегда надо гнаться за модой с утф8 только потому, что этот утф8 распиарили.


А мне чехать на это. Клиентам тоже в настоящее время чехать, так как место на диске стоит копейки и у всех его озбыток.
utf-8 не мода, а грамотное решение, которое даёт возможность забыть о проблемах с кодировкой навсегда.
edogs
Цитата(gylys @ 24.08.2008, 22:33) *
А мне чехать на это. Клиентам тоже в настоящее время чехать, так как место на диске стоит копейки и у всех его озбыток.
Дело не только в месте на диске, жаль если Вы этого действительно не понимаете. Для "хомяков" и их владельцев впрочем действительно разницы нет.
Цитата(gylys @ 24.08.2008, 22:33) *
utf-8 не мода, а грамотное решение, которое даёт возможность забыть о проблемах с кодировкой навсегда.
Что особенно ярко подчеркивает этот топик biggrin.gif По факту - утф8 в тех ситуациях когда это избыточное решение это лишь безграмотная дань моде. А в случае когда достаточно cp1251 оно таки избыточное. На практике оно нужно только когда сайт реально мультиязычный, что бывает достаточно редко. И ТС по большому счету сильно прав, что хочет от утф8 избавиться.
gylys
Цитата(edogs @ 24.08.2008, 22:01) *

Дело не только в месте на диске, жаль если Вы этого действительно не понимаете. Для "хомяков" и их владельцев впрочем действительно разницы нет.


Да, я этого не понимаю и у меня только хомяки водится biggrin.gif
Для сведения:

Код
# Basic Latin letters, digits, and punctuation signs use one byte.

# Most European and Middle East script letters fit into a two-byte sequence: extended Latin letters (with tilde, macron, acute, grave and other accents), Cyrillic, Greek, Armenian, Hebrew, Arabic, Syriac, and others.

# Korean, Chinese, and Japanese ideographs use three-byte sequences.


Прежде чем спорить, надо учится, учится и ещё раз учится, не помню кто так сказал biggrin.gif
edogs
Цитата(gylys @ 24.08.2008, 23:37) *
Да, я этого не понимаю
Это заметно.

Цитата(gylys @ 24.08.2008, 23:37) *
Для сведения:
Прежде чем спорить, надо учится, учится и ещё раз учится, не помню кто так сказал biggrin.gif
Когда приводите ссылки на что-то, то принято объяснять зачем Вы эту ссылку привели и о чем по Вашему мнению там говорится. Иначе достаточно очевидно, что Вы просто не понимаете о чем идет речь в приведенной Вами ссылке и приводите ее исключительно для того, что бы поумничать и пофлеймить, прямо как в этом случае.

Честно говоря в этом топике мы Вашу позицию вообще не понимаем. Достаточно понятно, что позиция "а ну ка давайте выделим под БД в 2 раза больше места и начхать что будет подтормаживать" Вам как хостеру выгодна, но зачем так явно её демонстрировать biggrin.gif
cron
Цитата(edogs @ 24.08.2008, 19:48) *

Вам для информации - БД с русским текстом в утф8 будет занимать в 2 раза больше места, чем та же БД в cp1251.

о.для меня единственная полезная информация в топике.благодарю!
gylys
Цитата(edogs @ 24.08.2008, 23:25) *

Честно говоря в этом топике мы Вашу позицию вообще не понимаем. Достаточно понятно, что позиция "а ну ка давайте выделим под БД в 2 раза больше места и начхать что будет подтормаживать" Вам как хостеру выгодна, но зачем так явно её демонстрировать biggrin.gif


Моя позиция более чем понятна - предлагать человеку правильный путь а не вводить в заблуждение. Могу написать, что мне начехать на то, что в четыре раза больше будет занимать места на диске база с utf-8 кодировкой. Вы уже одного ввели, он даже поблагодарил biggrin.gif
Реально же, база занимает примерно 20 - 25% больше, но на скорость работы MySQL это фактически не отражается, так как по любому МySQL поддержывает UTF-8, но не полностью её использует. Так как поддерживается только 3 бита, а не 4. Почти все русские символы помещаются в 2 байта. То есть, ровно так же как и в cp1251.
Применение cp1251 в базе на сегодняшний день уже проблема, так как PHP скрипты способны записать символы в UTF-8. То есть я могу написать литовские буквы, хотя кодировка этого форума вроде бы не разрешает. (пример ąžšūįųėčę„“ ? модераторов прошу позже стереть эти гадкие буквы ) но такие записи уже проблема для хозяйна форума, так как при конвертации на UTF-8, эти буквы не будет конвертироватся. Из за этого в некоторых случаях возможны сбои дампа базы и так далее.
Если углублятся дальше, то нет такого общего стандарта cp1251, это внутренний стандарт Microsoft и его применение не совсем коректно за пределами продуктов Била, но думаю это будет слишком глубоко в лес.

P.S. Не думал что у edogs'ев так плохо с англиским....
edogs
gylys, Вы такой смешнойsmile.gif

Цитата(gylys @ 25.08.2008, 01:20) *
мне начехать на то, что в четыре раза больше будет занимать места на диске база с utf-8 кодировкой.
В случае русского языка, текст занимает в 2 раза больше места, а не в 4.
Цитата(gylys @ 25.08.2008, 01:20) *
Реально же, база занимает примерно 20 - 25% больше,
В случае русского языка, текст занимает на 100% больше места в утф8 кодировке, чем в цп1251, а не в 20-25%.
Да, в базах хранится не только текст, но именно текстовые поля обычно занимают максимум места. На статью в 12кб, дай бог 120 байт технических данных.
Цитата(gylys @ 25.08.2008, 01:20) *
1) на скорость работы MySQL это фактически не отражается,
2) так как по любому МySQL поддержывает UTF-8, но не полностью её использует.
1) Иногда отражается, даже очень. Вы забываете что в мускуле есть операции перетряхивающие всю базу. Не все выборки происходят по индексам, и даже если по индексам, то на строительство индексов нужно время. И то и то напрямую зависит от размера БД.
2) Вы сами-то поняли что сказали? Мускул НЕ полностью использует УТФ8, ПОЭТОМУ практически в ней не тормозитsmile.gif)) Логика на грани фантастики. Следующее Ваше утверждение видимо будет "машина не полностью использует мощность двигателя (использует утф8), поэтому несмотря на увеличение массы в 2 раза (размера базы), она все равно так же быстро бегает":)))
Цитата(gylys @ 25.08.2008, 01:20) *
3) Почти все русские символы помещаются в 2 бита. 4) То есть, ровно так же как и в cp1251.
Шедевральноsmile.gif)))
3) Не бита, а байта. 4) В cp1251 оно занимает 1 байт, а не 2
Цитата(gylys @ 25.08.2008, 01:20) *
Применение cp1251 в базе на сегодняшний день уже проблема, так как PHP скрипты способны записать символы в UTF-8
Нет, не проблема. Если кому-то хочется писать на литовском там, где общепринятый язык русский, это проблема этого "кого-то", и не надо кричать про дискриминацию, ок?

Цитата(gylys @ 25.08.2008, 01:20) *
5) Из за этого в некоторых случаях возможны сбои дампа базы и так далее.
5) Нет, невозможны. Именно сбои дампов - невозможны. По крайней мере если делаются не кривыми руками.
Цитата(gylys @ 25.08.2008, 01:20) *
6) P.S. Не думал что у edogs'ев так плохо с англиским....
6) У нас-то как раз отлично с английским. Как мы понимаем это Вы так "элегантно" пытаетесь уйти от вопроса по какой причине Вы привели ту ссылку? Окей, будем считать что у Вас это получилось и никто рояля в кустах не заметилsmile.gif

P.S.: gylys, простите за прямоту, но не тормозите. Ок? Раз Вам так невообразимо сложно понять простой английский мануал, то пойдите по пути практика. Создайте базу в утф8, таблицы с текстовыми полями в них. Забейте её рандомным русским текстом. Посмотрите на размер. Конвертните в cp1251. Посмотрите на размер. Убедитесь что размер уменьшился почти в 2 раза (русский текст так и ужмется, не ужмуться цифры, пунктуация и т.д.) и мы правы. Отучитесь спорить в области где не фига не понимаете. Извинитесь и скажите спасибо за наукуsmile.gif
gylys
Цитата(edogs @ 25.08.2008, 02:08) *

Посмотрите на размер. Конвертните в cp1251. Посмотрите на размер. Убедитесь что размер уменьшился почти в 2 раза (русский текст так и ужмется, не ужмуться цифры, пунктуация и т.д.) и мы правы. Отучитесь спорить в области где не фига не понимаете. Извинитесь и скажите спасибо за наукуsmile.gif


Сами и создавайте, я не один раз это проверял. Также учите англиский и читайте про работу MySQL с кодировками. Это полезно не только для молодых, но и для старых демагогов biggrin.gif
edogs
Цитата(gylys @ 25.08.2008, 02:18) *
Сами и создавайте, я не один раз это проверял.
Лжете, не первый раз уже Вас ловим на прямой лжи.
Если бы Вы это делали, Вы бы знали, что в cp1251 русские символы занимают ровно в 2 раза меньше, чем в utf8.
Это если поля типа varchar и т.д, а в полях типа char на утф8 мускул резервирует 3 байта, ровно, поэтому уходит на любых символах в ТРИ раза больше места, а не в два.
Цитата(gylys @ 25.08.2008, 02:18) *
также учите англиский и читайте про работу MySQL с кодировками
Заявил gylys так и не сумевший объяснить что он хотел сказать ссылкой на английский сайт про работу с кодировками и зачем ее привелsmile.gif)))
gylys
Цитата(edogs @ 25.08.2008, 02:26) *

Лжете.
Если бы Вы это делали, Вы бы знали, что в cp1251 русские символы занимают ровно в 2 раза меньше, чем в utf8.


Забейте в голову старого демагога - я никогда не лгу!
И за свои слова отвечаю, и перед тем как утверждать, часто проверяю то что хочу сказать.

-rw-r--r-- 1 root root 44906448 May 27 02:02 ххххх_forum.sql
-rw-r--r-- 1 root root 36661180 Aug 25 00:33 cp1251.хххх_forum.sql
Цитата(edogs @ 25.08.2008, 02:26) *


Заявил gylys так и не сумевший объяснить что он хотел сказать ссылкой на английский сайт про работу с кодировками и зачем ее привелsmile.gif)))

Можно объяснять человеку способному понять, но безтолковому демагогу ни кто не поможет laugh.gif Плохо знаете кодировки edogs'ы, ой плохо... и ещё не знаете того, что я когда то для Netscape 4 создавал скрипт для решения проблемы с "????????" при кодировке cp1257, да и cp1251 и уже с тех времён было ясно, что спасение от мазохизма с кодировками это utf-8 biggrin.gif

Когда на рынке были i486 компютеры, тогда стоило ещё избегать изпользовать utf-8, так как многие програми не имели полной поддержки этой кодировки и тратились ресурсы на перекодировки на локальную кодировку. Но на сегодняшний день 8 битовую кодировку может изпользовать только абсолютно безграмотный человек или у которого ржавый компютер. Так что выбрасывайте старую рухлеть и станьте наконец человеком laugh.gif

P.S. 1998 - 2000 годах у нас тоже были дискусии cp1257 (Baltic) vs utf-8, тогда я высказывался за первую из за экономии ресурсов и из за того, что она обще принята и понятна, не важно что нет такого стандарта. И тогда утверждал что где то через несколько лет можно будет польностью спокойно переходить на utf-8. В реальности оказалось, что полный переход в интернте на unicode стал возможный только около 2003-2004 году, когда linux уже польностью справлялся с этой кодировкой, а Microsoft Windows тоже терпимо.
Что касается MysQL, то уже с 4.1 она работает на unicode. Примерно в то время и увеличение ресурсов на уникод уже стало не существенным. А на сегодняшний день вобще смех. Если edogs'ы упрекают в том, что мне мол выгодно когда сайты клиентов потребляет больше ресурсов, то могу только посмеятся. Я лично всегда добавлю ресурсов на железо клиенту который изпользует utf-8 потому, что это мне будет стоить меньше человеческих ресурсов.
И вобще я не знаю что такое перегрузки со стороны клиентов, у нас одни хомяки laugh.gif
edogs
Цитата(gylys @ 25.08.2008, 03:56) *
Забейте в голову старого демагога - я никогда не лгу!
Как наглядно показывает этот топик - лжете, прямо и бессовестно.

</B>
Цитата(gylys @ 25.08.2008, 03:56) *

-rw-r--r-- 1 root root 44906448 May 27 02:02 ххххх_forum.sql
-rw-r--r-- 1 root root 36661180 Aug 25 00:33 cp1251.хххх_forum.sql
Опять ничего не значащие данные. Так же как раньше Вы привели ничего не значащую ссылку.
Да, для информации. mysql использует для хранения данных совсем не sql файлы. В sql файлы, безграмотный Вы наш, делаются дампы.

Цитата(gylys @ 25.08.2008, 03:56) *
Но на сегодняшний день 8 битовую кодировку может изпользовать только абсолютно безграмотный человек или у которого ржавый компютер.
Нет. Только такой абсолютно безграмотный человек как Вы может предлагать без особой необходимости использовать под хранение данных в 2-3 раза больше места теряя в производительности.

Цитата(gylys @ 25.08.2008, 03:56) *
Так что выбрасывайте старую рухлеть и станьте наконец человеком
Из такого лжеца как Вы даже на самом современном компьютере человека не выйдет, а жаль.
gylys
Edogs'ы, вы совсем тупые или только прикидываетесь?
edogs
Цитата(gylys @ 25.08.2008, 04:27) *
Edogs'ы, вы совсем тупые или только прикидываетесь?
Все хотели задать Вам этот же вопрос, только вежливость не позволяла.
gylys
Цитата(edogs @ 25.08.2008, 03:34) *

Все хотели задать Вам этот же вопрос, только вежливость не позволяла.


Вежливость edogs'ев двуликая. Разводить демагогию, нести бред, оскорблять она разрешает, а вот задать прямой вопрос уже нехватает храбрости biggrin.gif Эх, нравитеь вы мне, когда нибудь встретимся, вот тогда будет интересно laugh.gif
edogs
Цитата(gylys @ 25.08.2008, 04:38) *
Вежливость edogs'ев двуликая. Разводить демагогию, нести бред, оскорблять она разрешает, а вот задать прямой вопрос уже нехватает храбрости biggrin.gif Эх, нравитеь вы мне, когда нибудь встретимся, вот тогда будет интересно laugh.gif
gylys-а несло smile.gif
Вы забываете об одной детали. В топике этом Вы - лжете, а мы Вас опровергаем. Это видимо тут такая традиция smile.gif Вот и опять... только опровергать уже не будем, надоело.
edogs
Для тех, кого это может касаться. Немного фактов про кодировки и связанную с этим производительность. Что бы закончить топик на позитивной ноте, да и вообще отметить наше 3500 сообщение тутsmile.gif

Первое и главное. cp1251 использует для хранения ОДИН БАЙТ.

По ссылке (данной выше gylys-ом), с полной очевидностью написано, что идея utf8 в том, что бы использовать под русские символы ДВА БАЙТА
Цитата
" The idea of UTF-8 is that various Unicode characters are encoded using byte sequences of different lengths: Most European and Middle East script letters fit into a two-byte sequence: extended Latin letters (with tilde, macron, acute, grave and other accents), Cyrillic, Greek, Armenian, Hebrew, Arabic, Syriac, and others."
Итак, уже просто переведя базу в utf8 русский язык начинает занимать в 2 раза больше места.

Там же есть интересный "хинт" по "сохранению места". Рекомендуется использовать varchar вместо char, т.к. в char мускул резервирует ТРИ БАЙТА под символ, ВНЕ зависимости от того, какой символ используется (даже если это цифры или латинские буквы). Итак, как видим, раздуть размер БД можно легко и просто
Цитата
Tip: To save space with UTF-8, use VARCHAR instead of CHAR. Otherwise, MySQL must reserve three bytes for each character in a CHAR CHARACTER SET utf8 column because that is the maximum possible length. For example, MySQL must reserve 30 bytes for a CHAR(10) CHARACTER SET utf8 column.
Итак, если в базе у нас встречаются текстовые поля фиксированной длины, то мы тратим уже в 3 раза больше места, под простые текстовые поля.

Но довольно теории. Немного практики. mysql хранит данные в файлах MYD и индексы к ним в MYI. (попытка gylys-а использовать в качестве аргумента SQL файлы, дампы таблиц, по сути безграмотная провокация, т.к. мускулом они в работе ВООБЩЕ не используются). В принципе размер занимаемый БД можно посмотреть прямо в phpmyadmin, но можно и напрямую.

Итак (дампы сделаны с разницей несколько минут, максимум 100 записей разница; первое - cp1251, второе utf8; база абсолютно живая - русского текста примерно половина - т.к. пробелы и html форматирование занимает много места):
а) (таблица где нет текстовых полей)

63082976 Aug 25 04:42 msgi.MYD
63082912 Aug 25 04:45 msgi.MYD

б) (таблица где есть 2 текстовых поля переменной длины - text, и несколько int типа)
343846768 Aug 25 04:42 msgt.MYD
492589760 Aug 25 04:46 msgt.MYD

в) (таблица где есть 2 текстовых поля постоянной длины - char, и несколько int типа)
22860729 Aug 25 04:22 rawfrl.MYD
67706297 Aug 25 04:44 rawfrl.MYD

г) (файлы индексов, полнотекстовый там кажется у нас, не помним точно, они особо не важны, но раз уж показываем статистику, почему бы и нет)
314408960 Aug 25 05:00 msgt.MYI
363799552 Aug 25 04:59 msgt.MYI

д) (специально сделали таблицу копию msgt, но без хтмл форматирования и избыточных пробелов, но сделали специально, т.к. выше говорили о русскомтексте и уж надо было почище эксперимент поставить): разница в 1.8 раза (сорри, окно уже закрыли, не записали точных цифр)

Комментарии по объему излишни, но в принципе на объем сам по себе наплевать... важно на что он влияет и чему является причиной.
А влияет он на скорость: создания индексов, апдейта базы, выборки/сортировки/поиска не по индексам (тоже бывает, даже в грамотно спроектированных таблицах), бакапа базы и т.д... . И всё это практически в прямой зависимости.
Индекс например в утф8 создается в 1.5 раза дольше на таблицах пункта Б и в 2 раза на таблицах пункта В. Апдейты медленнее в утф в 2 раза на таблицах пункта Б и в 1.5 раза на таблицах пункта В. Скорость бакапа прямо пропорцинально от размера зависит. Выборки не по индексам прямо пропорциональны размеру таблиц. И всё в таком духе.

Конечно каждый выбирает сам - покупать вдс в 1.5-3 раза мощнее и использовать utf8 или перевести для русского языка базы в cp1251 и платить меньше. Что выгодно хостерам - ну, опять же, пусть каждый делает выводы сам.

P.S.: Больше на эту тему выступать не будем, неинтересно доказывать очевидное и общеизвестное.
eSupport.org.ua
Цитата(edogs @ 24.08.2008, 19:16) *
Мы знаем что для личных вопросов существует личка. А Ваши безграмотные попытки подколоть нас в разных топиках уже достаточно нас утомили, что бы больше на них не реагировать.


Тогда почему свой совет по поводу расточения ресурсов на юникод вы даете не в личке?
А попытки безграмотные, это точно. В грамотных подколках вам равных нет biggrin.gif

gylys
Цитата(edogs @ 25.08.2008, 04:12) *


Комментарии по объему излишни, но в принципе на объем сам по себе наплевать... важно на что он влияет и чему является причиной.


Вы вырываете из контекста даже таблички базы smile.gif В реальной жизни имеем типичные базы с типичными таблицами и оперируем усреднёнными параметрами. И я привёл пример одной базы рускоязычного форума VB в utf-8 и в cp1251. Могу для особо каких то повторить:

-rw-r--r-- 1 root root 44906448 May 27 02:02 ххххх_forum.sql
-rw-r--r-- 1 root root 36661180 Aug 25 00:33 cp1251.хххх_forum.sql

На даты смотреть не надо, так как файл ххххх_forum.sql оргинал, а cp1251.хххх_forum.sql просто сконвертирован ххххх_forum.sql в cp1251 biggrin.gif
В самом худшем случае, на очень больших базах может бытьполучим усреднённое увеличение объёма в два+ раза, но может быть и нет. Условно большими можно называть базы с таблицами в гигабайт и более. Но работа с такими базами требует оптимизации самого сервера, а не отказа от utf8.
edogs
gylys,

Вы видимо не прочли этот пост http://forum.hostobzor.ru/index.php?s=&...st&p=115096 мы Вам там всё подробно объяснили. Читайте до понимания.

Да, Вам обычно очень важно оставить за собой последнее слово, оставляйте, на здоровье, после Вашей почтовой выходки с письмами содержания такого что публиковать мы их не будем, никакого с Вами или о Вас разговора больше не будет, нигде, ни о чем.

ProstoBIN
весело, много букв, а по теме никто ничего не смог сказать, что в общем то уже не нужно, сам справился laugh.gif
eSupport.org.ua
edogs, ну и пусть база занимать будет вдвое больше места на диске
диски сейчас большие и дешевые

edogs
Цитата(eSupport.org.ua @ 26.08.2008, 10:46) *
edogs, ну и пусть база занимать будет вдвое больше места на диске
диски сейчас большие и дешевые
http://forum.hostobzor.ru/index.php?s=&...st&p=115096

Читать со слов "на объем сам по себе наплевать... важно на что он влияет и чему является причиной. ".
База занимающая в 2 раза больше места на ряде операций будет в 2 раза сильнее тормозить. При чем тормозить по дисковым операциям, что лично для нас больное место. Насколько дольше, например, будут делаться бакапы на сервере с вирт.хостингом, а строится индексы, производится операции без индексов, апдейты ?
Ладно бы это того стоило, но что мы получаем взамен? Да ничего по сути, т.к. утф8 для русского языка избыточен, цп1251 достаточно.
Как бы даже непонятно о чем говорить, tinyint вместо int ставят что бы сэкономить место и выиграть в скорости, set тип поля для тех же целей сделан, text и mediumtext тоже разные только по этой причине и т.д.. И тут вдруг берем и без необходимости убиваем в 2 раза больше места под русский текст чем необходимо. Потому что это "модно и современно". А для "доказательств" в пользу утф используются маразмы вида "в цп1251 символ занимает 2 байта" и сравнение размеров sql файлов к делу вообще отношения не имеющих.

Окей, часть путаницы еще идет от того, что в ранних версиях мускула, в которых не было утф8, были проблемы с кодировками. Появился утф8 и проблемы с кодировками снялись. Ну да, они снялись, но снялись-то не из-за появления утф8, а из-за того, что проблемы с кодировками исчезли.
eSupport.org.ua
mysql в utf-8 на хостинге настроенном мной будет работать вдвое быстрее чем mysql в cp1251 на хостинге настроенном edogs
Не путайте причину со следствием. Тормоза - они от неправильных настроек и неподходящего железа
laugh.gif
gylys
Цитата(eSupport.org.ua @ 27.08.2008, 05:04) *

Не путайте причину со следствием. Тормоза - они от неправильных настроек и неподходящего железа
laugh.gif


Да пусть они хоть КОI8 изпользуют, сэкономит ещё один бит... wink.gif им же надо иметь последнее слово и быть гигантами мысли tongue.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2025 Invision Power Services, Inc.