Как стать автором
Обновить
3.79

MySQL *

Свободная реляционная СУБД

Сначала показывать
Порог рейтинга
Уровень сложности

Календарные типы данных в MySQL: особенности использования

Время на прочтение6 мин
Количество просмотров78K
В MySQL 5 есть несколько типов данных для хранения даты и времени. Это TIMESTAMP, DATE, DATETIME, TIME и YEAR. Все они обладают своими особенностями, и выбор в пользу того или иного календарного типа должен производиться отдельно в каждой конкретной ситуации. Я хотел бы поделиться с вами результатом моего сегодняшнего миниисследования этих типов, в том числе в аспекте работы с временными зонами.


Читать дальше →
Всего голосов 39: ↑22 и ↓17+5
Комментарии8

Хранение даты в mysql с учетом часового пояса

Время на прочтение2 мин
Количество просмотров36K
image
Статья о том, как избежать путаницы с датами, хранимыми в mysql.
Эти путаницы возникают по двум причинам:
1. Разные территории нашей планеты имеют разный сдвиг времени.
2. Некоторые страны переходят на летнее время и обратно(карта со странами, переходящими на летнее время).

Многие решают эти проблемы по-разному. Кто-то делает сдвиг даты в SQL запросах, кто-то в php. Кто-то хранит даты в TIMESTAMP, кто-то в DATETIME. Я переискал много источников, но нигде не нашел верного решения данной проблемы на русском. В родной документации по mysql нашел информацию о том, как добиться корректной автоматической конвертации TIMESTAMP в локальное время, но тут тоже свои подводные камни.

Если в php настройка временной зоны делается просто, в mysql возникают сложности, особенно, если доступ к mysql серверу вам ограничен и там еще не установлены некоторые таблицы.
Читать дальше →
Всего голосов 13: ↑9 и ↓4+5
Комментарии8

Семинар «Производительность MySQL», 22 сентября, Киев

Время на прочтение1 мин
Количество просмотров747
Компания Sun Microsystems и Образовательный Центр i∙klass и приглашают вас на семинар «Производительность MySQL».

Докладчик:
Дмитрий Кравчук, Principal Benchmark Engineer, Sun Microsystems, Париж, Франция
Читать дальше →
Всего голосов 7: ↑5 и ↓2+3
Комментарии1

Full Hierarchy — иерархические структуры в базах данных

Время на прочтение5 мин
Количество просмотров16K
Здравствуйте. В этой статье я хотел бы написать про один очень интересный способ хранения иерархических структур в базах данных, не относящийся при этом к общепринятым и общеизвестным трём (Adjacency List, Nested Set, Materialized Path). Я не встречал в интернете упоминания о нём, о чём очень удивлен, ведь, по моему мнению, — это лучший и единственный способ хранить иерархические структуры. При разработке console-like форума я воспользовался именно этим способом, о чём ни на грамм не жалею. Это авторская статья и ни одно предложение не было вставлено метотодом копипаста.

Под катом способ, который я назвал Full Hierarchy
Всего голосов 74: ↑65 и ↓9+56
Комментарии108

Истории

Что нужно настроить в mySQL сразу после установки?

Время на прочтение5 мин
Количество просмотров145K
Вольный перевод довольно старой статьи с MySQL Performance Blog о том, что лучше сразу же настроить после установки базовой версии mySQL.
Читать дальше →
Всего голосов 95: ↑88 и ↓7+81
Комментарии24

Обзор движка Falcon в mySQL

Время на прочтение7 мин
Количество просмотров3.4K
Несмотря на то, что ещё в середине июня 2008 года Джим Старки (в тот момент глава команды, работающей над движком Falcon) покинул проект, и вообще на весьма туманные перспективы использования данного движка в следующих версиях mySQL, хотелось бы поделиться тем, что разработчики хотели в нём реализовать.
Читать дальше →
Всего голосов 6: ↑4 и ↓2+2
Комментарии6

Краткий обзор движков таблиц MySQL

Время на прочтение3 мин
Количество просмотров77K
Цель этой статьи — дать краткий, очень сжатый обзор движков, для того, чтобы статьей можно было пользоваться при выборе движка на этапе проектирования \ создания \ оптимизации таблицы. Предполагается, что читатель знает суть вопроса по крайней мере поверхностно и способен сам отыскать всю дополнительную информацию (вопросы в комментах можно задавать всегда :) )
Читать дальше →
Всего голосов 123: ↑108 и ↓15+93
Комментарии73

Подсчёт общего количества строк выборке в mySQL при использовании LIMIT

Время на прочтение5 мин
Количество просмотров64K
Один хороший человек хочет попасть на хабр. Для подтверждения своих благих намерений он написал статью, которую я привожу вам.

Наверняка многие знают о существовании в mySQL функции FOUND_ROWS(). Её чаще всего используют для подсчета общего числа строк в таблице, удовлетворяющих заданным условиям. Используют её обычно совместно с директивой SQL_CALC_FOUND_ROWS следующим образом:

Mysql> SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE column > 1 LIMIT 0, 50;
Mysql> SELECT FOUND_ROWS();

Результатом второго запроса будет общее количество строк в таблице «table», удовлетворяющих условию «column > 1» (а не только тех, что были возвращены первым запросом).
Следует учитывать некоторые особенности этой функции, когда используете её без директивы SQL_CALC_FOUND_ROWS, о чём добросовестно предупреждает документация mySQL: в этом случае она вернёт общее количество обработанных строк (не возвращённых!). Например:

Mysql> SELECT * FROM table LIMIT 0, 50;
Mysql> SELECT FOUND_ROWS();

Результатом, как и ожидается, будет «50». Но следующие запросы вернут не слишком ожидаемый результат:

Mysql> SELECT * FROM table WHERE column > 1 LIMIT 50, 50;
Mysql> SELECT FOUND_ROWS();

Несмотря на то, что первый запрос вернёт 50 строк, результатом будет «100», т.к. mySQL пришлось просмотреть именно 100 строк.
Читать дальше →
Всего голосов 67: ↑55 и ↓12+43
Комментарии79

Денормализация БД. Зачем? Когда? Как?

Время на прочтение6 мин
Количество просмотров91K

денормализация — это зло, или просто надо уметь её готовить?


Денормализация- это не результат кривых рук. Это не недоделанная нормализация, это намеренное нарушение нормальных форм, для увеличения производительности.
Вопрос о денормализации у меня возникал не раз. Каждый раз, когда приходилось идти на сделку с совестью, нарушая принципы нормальных форм, оставалось ощущение неудовлетворённости, ложное осознание своей некомпетентности. Со временем, при работе в команде, обнаружилось, что это не только моя проблема. Настало время разобраться: денормализация — это зло, или просто надо уметь её готовить?
Читать дальше →
Всего голосов 33: ↑32 и ↓1+31
Комментарии22

Nested Sets + MySQL TRIGGER

Время на прочтение7 мин
Количество просмотров9.7K

Задача


Задача такая же как и в предыдущей статье, только применимо к MySQL.

Грабли


Хорошая новость ребята! В MySQL нет проблемы с рекурсивными триггерами! Разработчики MySQL просто тупо лочат изменяемую таблицу даже на уровне триггера, вот редиски. Но, собственно, нас может остановить только отключение электричества.
Есть небольшая лазейка, с… объединенными таблицами. Хотя я не нашел в документации подтверждения того, что это так специально было задумано, но и отрицания тоже не было. Правда есть вероятность того, что эту лазейку могут прикрыть, хотя я не вижу в этом смысла.
Увы, механизм триггеров в MySQL новый и довольно сырой, что накладывает некоторые ограничения на его использование, но все же его достаточно для решения нашей задачи.
Читать дальше →
Всего голосов 37: ↑33 и ↓4+29
Комментарии47

Средства создания горячих BackUp`ов MySQL

Время на прочтение3 мин
Количество просмотров33K
Доброго времени суток. Недавно я задался вопросом о том, как делать горячие BackUp`ы MySQL-серверов — ниже компиляция из прочитанного. Заранее хочу сказать, что данный пост является скорее большой заметкой, чем полноценной статьёй. Я намеренно уклоняюсь от описания синтаксиса — на эту тему уже немало написано — я же ставил перед собой другую цель — составить краткий обзор основных методов с характерными особенностями:
далее
Всего голосов 57: ↑53 и ↓4+49
Комментарии49

Определяем порядок столбцов в составном индексе

Время на прочтение5 мин
Количество просмотров21K
Хочу поделиться простым эмпирическим методом, который я использую для определения того, в каком порядке должны идти столбцы в составном индексе. Этот способ подходит не только для MySQL, он также применим к любым СУБД, в которых используются b-tree индексы.

Давайте начнем с запроса, который возвращает пустой результат, но при этом делает полный скан таблицы. EXPLAIN покажет на нем, что нет доступных индексов (т.е. possible_keys = NULL)

SELECT * FROM tbl
WHERE
  status='waiting' AND
  source='twitter' AND
  no_send_before <= '2009-05-28 03:17:50' AND
  tries <= 20
ORDER BY date ASC LIMIT 1;
Читать дальше →
Всего голосов 52: ↑47 и ↓5+42
Комментарии17

MySQL переделают в стиле Dizzle?

Время на прочтение1 мин
Количество просмотров988
На Хабре прошла незамеченной интересная новость о том, что Монти Вайдениус, которого называют «отцом MySQL», а также Пётр Зайцев (основатель компании Percona) объявили о создании общественной организации Open Database Alliance, под крышей которой предлагается объединить все проекты, связанные с MySQL. По мнению основателей организации, будущее MySQL выглядит неопределённо в свете покупки Sun компанией Oracle. Новый альянс должен стать центром разработки MySQL и главным хабом по превращению этой СУБД в поистине открытую и прозрачную систему.

В данной ситуации речь идёт даже о том, чтобы переделать MySQL в стиле Dizzle. Говорят, что этот проект начался ещё в январе 2009 года в стенах Sun, а теперь Вайдениус/Зайцев с помощью сообщества могут продолжить его уже независимо от нового владельца MySQL.

via PRWeb, slashdot
Всего голосов 11: ↑8 и ↓3+5
Комментарии0

Ближайшие события

Почему Ларри Эллисон так стремился купить MySQL?

Время на прочтение1 мин
Количество просмотров1.4K
Когда Ларри Эллисон, директор Oracle, объявил в понедельник о покупке компании Sun, он ни словом не обмолвился о MySQL, своём конкуренте на рынке малых СУБД. Именно этот сегмент остаётся непокрытым в продуктовой линейке Oracle. Все хорошо помнят, как страстно Ларри Эллисон жаждал завладеть этой шведской компанией три года назад. В течение всего 2006 года Ларри Эллисон неоднократно предлагал выкупить MySQL, но трое друзей-шведов, основателей MySQL, неизменно отвергали его предложение от «империи зла», взлёт которой произошёл благодаря сотрудничеству с ЦРУ, после чего MySQL в итоге продалась Sun.

Теперь же мечта Эллисона сбылась, и он даже не говорит, что купил Sun только ради MySQL.

В свете всех известных фактов очень странно смотрятся размышления некоторых аналитиков о том, что MySQL не является конкурентом Oracle. Это слишком узкий взгляд на вещи, потому что не принимаются в расчёт долговременные планы Эллисона, а также перспективы развития самой MySQL (например, в версии 5.4 этой СУБД уже появилась поддержка 16-процессорных серверов x86, а по некоторым тестам производительность выросла на 40000%).

Кстати, по странной случайности выход MySQL 5.4 был запланирован на 21 апреля, но за день до этого произошла сделка с Oracle.

via betanews
Всего голосов 55: ↑47 и ↓8+39
Комментарии49

Основы репликации в MySQL

Время на прочтение10 мин
Количество просмотров328K
С репликацией серверов MySQL я познакомился относительно недавно, и по мере проведения разных опытов с настройкой, записывал, что у меня получалось. Когда материала набралось достаточно много, появилась идея написать эту статью. Я постарался собрать советы и решения по некоторым самым основным вопросам, с которыми я столкнулся. По ходу дела я буду давать ссылки на документацию и другие источники. Не могу претендовать на полноту описания, но надеюсь, что статья будет полезной.
Читать дальше →
Всего голосов 72: ↑70 и ↓2+68
Комментарии44

Импорт новостей из одного формата в WordPress

Время на прочтение1 мин
Количество просмотров774
Я подумал, что здесь наверняка мне помогут решить мою задачу. Я пользовался на сайте движком php+mysql Virtuanews (virtuanews.co.uk), сейчас уже поддержка этого движка закрыта и домен не работает. Так вот, я решил поменять движок на сайте, на WordPress 2.7.1 (Lecactus Edition) и ищу у Вас помощи, сконвертировать базу mysql, в формат WordPress, чтобы импортировать посты. Как делать импорт-экспорт я знаю, а как базу (ту её часть, в которой содержаться топики и заголовки) сконвертировать или сделать ещё какие нибудь шаманские действия для того, чтобы все новости появились в WordPrese? Если кто нибудь знает — подскажите пожалуйста! Базу, которую нужно привести к формату WordPress я выложил на Народ narod.ru/disk/7405716000/db_backup_05-04-2009.sql.html (она весит около 11 мегабайт). Заранее спасибо за помощь!
Всего голосов 14: ↑3 и ↓11-8
Комментарии9

Ускоряем выборку произвольных записей MySQL

Время на прочтение3 мин
Количество просмотров33K
Последнее время оживилась публика с вопросом случайной выборки из таблицы. Решений по оптимизации полно, и нового сейчас я вам наверное ничего не покажу, просто напомню про основные методы оптимизации — упрощение запроса и индексацию. Без предисловий про фриленсеров, сразу к делу ;)

Читать дальше →
Всего голосов 59: ↑50 и ↓9+41
Комментарии22

Хранимые процедуры в MySQL

Время на прочтение2 мин
Количество просмотров27K
По долгу службы приходится глубоко разбираться с сабжем.
К сожалению, это не самое лучшее изобретение человечества, поэтому иногда приходится вбивать костыли, чтобы хоть как-то пользоваться этой штукой.
О костылях
Всего голосов 37: ↑35 и ↓2+33
Комментарии36

Расчет периодов стажа в MySQL

Время на прочтение3 мин
Количество просмотров7.2K
На одном форуме задали вопрос о том, как правильно посчитать разность дат в MySQL для учета стажа сотрудника. На первый взгляд вопрос оказался простым, но при детальном рассмотрении все оказалось куда интереснее.
Читать дальше →
Всего голосов 41: ↑33 и ↓8+25
Комментарии10

Выборка произвольных записей в MySQL

Время на прочтение4 мин
Количество просмотров107K
Есть вроде бы обычные задачи, которые можно решить сразу и не задумываясь, но при интенсивном использовании таких решений возникают проблемы, причем не маленькие. Об одной из таких задач я и хочу рассказать.
Почитать интересную статью
Всего голосов 44: ↑28 и ↓16+12
Комментарии142

Вклад авторов