{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "timsa.ru: заметки с тегом mysql",
    "_rss_description": "Моя записная книжка. Комментарии отключены из-за спама. Для вопросов используйте эту страничку",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/timsa.ru\/tags\/mysql\/",
    "feed_url": "https:\/\/timsa.ru\/tags\/mysql\/json\/",
    "icon": false,
    "authors": [
        {
            "name": "timsa",
            "url": "https:\/\/timsa.ru\/",
            "avatar": false
        }
    ],
    "items": [
        {
            "id": "55",
            "url": "https:\/\/timsa.ru\/all\/mysql-hints\/",
            "title": "Mysql hints",
            "content_html": "<p><a href=\"https:\/\/habrahabr.ru\/post\/105954\/\">https:\/\/habrahabr.ru\/post\/105954\/<\/a><\/p>\n<p>Работа с бекапами<\/p>\n<p>Делаем бекап<br \/>\nmysqldump -u USER -pPASSWORD DATABASE > \/path\/to\/file\/dump.sql<\/p>\n<p>Создаём структуру базы без данных<br \/>\nmysqldump —no-data — u USER -pPASSWORD DATABASE > \/path\/to\/file\/schema.sql<\/p>\n<p>Если нужно сделать дамп только одной или нескольких таблиц<br \/>\nmysqldump -u USER -pPASSWORD DATABASE TABLE1 TABLE2 TABLE3 > \/path\/to\/file\/dump_table.sql<\/p>\n<p>Создаём бекап и сразу его архивируем<br \/>\nmysqldump -u USER -pPASSWORD DATABASE | gzip > \/path\/to\/outputfile.sql.gz<\/p>\n<p>Создание бекапа с указанием его даты<br \/>\nmysqldump -u USER -pPASSWORD DATABASE | gzip > `date +\/path\/to\/outputfile.sql.%Y%m%d.%H%M%S.gz`<\/p>\n<p>Заливаем бекап в базу данных<br \/>\nmysql -u USER -pPASSWORD DATABASE < \/path\/to\/dump.sql<\/p>\n<p>Заливаем архив бекапа в базу<br \/>\ngunzip < \/path\/to\/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE<br \/>\nили так<br \/>\nzcat \/path\/to\/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE<\/p>\n<p>Создаём новую базу данных<br \/>\nmysqladmin -u USER -pPASSWORD create NEWDATABASE<\/p>\n<p>Удобно использовать бекап с дополнительными опциями -Q -c -e, т. е.<br \/>\nmysqldump -Q -c -e -u USER -pPASSWORD DATABASE > \/path\/to\/file\/dump.sql, где:<br \/>\n-Q оборачивает имена обратными кавычками<br \/>\n-c делает полную вставку, включая имена колонок<br \/>\n-e делает расширенную вставку. Итоговый файл получается меньше и делается он чуть быстрее<\/p>\n<p>Для просмотра списка баз данных можно использовать команду:<br \/>\nmysqlshow -u USER -pPASSWORD<\/p>\n<p>А так же можно посмотреть список таблиц базы:<br \/>\nmysqlshow -u USER -pPASSWORD DATABASE<\/p>\n<p>Для таблиц InnoDB надо добавлять —single-transaction, это гарантирует целостность данных бекапа.<br \/>\nДля таблиц MyISAN это не актуально, ибо они не поддерживают транзакционность.<\/p>\n<p>Общие факты<\/p>\n<p>Полезно под каждую базу на боевом сервере создавать своего пользователя<br \/>\nКодировка базы может быть любой, если она UTF8<br \/>\nВ большинстве случаев лучше использовать движок InnoDB<br \/>\nВ php лучше забыть про сильно устаревшее расширение mysql и по-возможности использовать pdo или mysqli<br \/>\nНовую копию MySQL всегда можно настроить и оптимизировать<br \/>\nБез особой нужды не стоит открывать MySQL наружу. Вместо этого можно сделать проброс портов<br \/>\nssh -fNL LOCAL_PORT:localhost:3306 REMOTE_USER@REMOTE_HOST<\/p>\n<p>Работа с данными<\/p>\n<p>Числа<\/p>\n<p>На 32-битных системах практически нет смысла ставить для типа INTEGER свойство UNSIGNED, так как такие большие числа в php не поддерживаются.<br \/>\nНа 64-битных системах, php поддерживает большие числа, вплоть до MySQL BIGINT со знаком.<br \/>\nСвязанные таблицы («Foreign keys») должны иметь полное сходство по структуре ключей. Т. е. если у нас на одной таблице для поля указано «INTEGER UNSIGNED DEFAULT 0 NOT NULL» то и на другой должно быть указано аналогично<br \/>\nДля хранения булевых значений, нужно использовать TINYINT(1)<br \/>\nА деньги лучше хранить в DECIMAL(10, 2), где первое число обозначает количество всех знаков, включая запятую, а второе — количество знаков после запятой. Итого, у нас получится что DECIMAL(10,2) может сохранить 9999999,99<\/p>\n<p>Строки<\/p>\n<p>В старых версиях (до 5.0.3) VARCHAR была ограничена 255 символами, но сейчас можно указывать до 65535 символов<br \/>\nПомните, что тип TEXT ограничен только 64 килобитами, поэтому что бы сохранять «Войну и Мир» пользуйтесь «LONGTEXT»<br \/>\nСамая правильная кодировка для вашей БД UTF8<\/p>\n<p>Даты<\/p>\n<p>Не забывайте, что<br \/>\nDATE, TIME, DATETIME — выводятся в виде строк, поэтому поиск и сравнение дат происходит через преобразование<br \/>\nTIMESTAMP — хранится в виде UNIX_TIMESTAMP, и можно указать автоматически обновлять колонку<br \/>\nСравнивая типы данных DATETIME и TIMESTAMP, не забывайте делать преобразование типов, например:<br \/>\nSELECT * FROM table WHERE `datetime` = DATE(`timestamp`)<\/p>\n<p>Перечисления<\/p>\n<p>Для перечислений правильно использовать тип ENUM<br \/>\nПравильно пишется так: ENUM(’мама’, ’мыла’, ’раму’)<br \/>\nМожно ставить значение по-умолчанию, как и для любой строки<br \/>\nВ базе поле с перечислением хранится как число, поэтому скорость работы — потрясающе высокая<br \/>\nКоличество перечислений ~ 65 тысяч<\/p>\n<p>dev.mysql.com\/doc\/refman\/4.1\/en\/storage-requirements.html<br \/>\nhelp.scibit.com\/mascon\/masconMySQL_Field_Types.html<\/p>\n<p>Отладка<\/p>\n<p>Если запросы тормозят, то можно включить лог для медленных запросов в \/etc\/mysql\/my.cnf<br \/>\nА потом оптимизировать запросы через EXPLAIN<br \/>\nИ наблюдать за запросами удобно через программу mytop<\/p>\n",
            "date_published": "2017-08-11T19:49:56+05:00",
            "date_modified": "2017-08-11T11:23:00+05:00",
            "tags": [
                "mysql"
            ],
            "_date_published_rfc2822": "Fri, 11 Aug 2017 19:49:56 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "55",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        }
    ],
    "_e2_version": 4079,
    "_e2_ua_string": "Aegea 11.0 (v4079)"
}