Добро пожаловать, Гость!

 
Для нас. Форум для общения







Начать новую тему Ответить на тему  [ 1 сообщение ] 
20 советов и хитростей для разработчика баз данных Mysql 
Автор Сообщение
Админ
Аватара пользователя

С нами: 8 лет, 6 месяцев и 5 дней
Сообщения: 221
Репутация: 101
Ответить с цитатой
Автор темы 20 советов и хитростей для разработчика баз данных Mysql
С момента своего появления в 1995 году MySQL быстро стала самой популярной в мире системой управления базами данных. С таким типом популярности приходит большая ответственность ... и бесчисленные улучшения, обновления и причудливые трюки.

Итак, какие из них наиболее полезны? Ниже вы найдете список 20 лучших советов по MySQL для экспертов и новичков.

Изображение

  1. Не редактируйте дампы БД

    Если вы когда-либо видели файлы дампа, созданные mysqldump, они выглядят ужасно, как обычные безвредные текстовые файлы. Но для тех, кто когда-либо пытался их редактировать, они быстро поняли, что это не просто текстовый файл. Большинство людей редактируют их в стандартном текстовом редакторе, а затем появляются проблемы. Единственный гарантированный способ избежать проблем - оставить файлы дампа в покое.
  2. Размер блока MyISAM

    Один из секретов - это установка размеров блоков в индексах таблиц MyISAM. Этот параметр, myisam_block_size, можно найти в файлах .MYI в буфере ключей, а также на диске. У него есть значение по умолчанию 1k, которое достаточно мало, чтобы быть оптимальным в современной системе. В большинстве файловых систем будет использоваться блок большего размера. И мы знаем, что для написания одного блока индекса потребуется чтение, а затем запись. Операционной системе никогда не придется писать на базовый диск, только если размер блока равен или больше размера блока файловой системы.
  3. Включение delay_key_write

    По умолчанию delay_key_write отключен. Причина этого в том, что если вы столкнулись с крахом mi-project, вы можете получить поврежденную базу данных. Так почему нужно включить его? Просто. Поскольку включение delay_key_write on гарантирует, что база данных не будет удалять ключевой файл MyISAM после каждой записи. Итак, если вы сделаете еще одну запись, это сэкономит много времени.
  4. Объединение: создание одинаковых типов столбцов и не забывайте про индексирование

    MySQL должен знать, как оптимизировать операции JOIN. Таким образом, если у вас есть приложение с многочисленными запросами JOIN, столбцы должны индексироваться в обоих таблицах. Убедитесь, что столбцы, к которым вы присоединились, одного типа, включая кодировку символов. В противном случае MySQL попытается выполнить полное сканирование таблицы. Поэтому в любое время, когда вам нужно извлечь информацию из ваших таблиц, просто измените запросы, чтобы получить информацию о пользователях из определенных столбцов.
  5. Определите условие "WHERE" с "LIMIT 1"

    Итак, вы ищете одну строку, но запрашиваете целиком таблицу. Почему бы не оптимизировать производительность за счет добавления LIMIT 1 и возврата точных результатов запроса? Таким образом, вместо прохождения всей таблицы (таблиц) или индекса - сканирование прекратится после того, как найдется первый нужный результат.
  6. Добавление ключевого слова EXPLAIN для SELECT запросов

    Любой, использующий MySQL, новичок или опытный, может оценить удобство и простоту этого совета. Добавив ключевое слово EXPLAIN - MySQL объяснит свои действия. EXPLAIN может рассказать вам, как сканируются ваши таблицы, используются индексы и т. Д. Теперь возьмите сложный запрос SELECT с соединениями и введите EXPLAIN перед ним. Результаты появятся в таблице.
  7. Кэширование запросов: оптимизация запросов

    Кэширование запросов обычно включено на серверах MySQL. Это связано с тем, что когда речь заходит о повышении производительности, кэширование запросов является одним из наиболее эффективных методов работы с базой данных. Один и тот же запрос может выполняться несколько раз. И гораздо быстрее извлекать результаты из кеша. Однако, CURDATE (текущая дата) отключает эту функцию. Для реализации кэширования для запроса с CURDATE просто добавьте строку PHP перед запросом:
    $query = 'SELECT id FROM table WHERE publish_date = CURDATE()';

  8. Использование трассировки для изоляции ошибок

    MySQL stack_trace может использоваться для изоляции различных ошибок. Вместо того, чтобы копаться во всех возможных целях, программист может захотеть обратить внимание на то, как легко нулевой указатель может испортить ваш код. Кроме того, как легко можно было обнаружить, отследить и исправить, используя подсказку Sky SQL. Мануал
  9. ENUMS, установите для sql_mode значение TRADITIONAL

    ENUMS может ввести в заблуждение. Поскольку они могут иметь более одного значения, легко создать ошибку. ENUMS может равняться указанному значению NULL, а затем фактически читаться как пустая строка. Конечно, вы получите предупреждения, что что-то не так. К счастью, есть легкое решение. Установите mysql_mode в TRADITIONAL. Вуаля!

    Два способа установить режим:
    //Запуск mysqld с ключом
    $--sql-mode=”modes”


    или
    $sql-mode=”modes” (my.ini – Windows / my.cnf - Unix)
    //Изменение во время выполнения, разделение нескольких режимов запятой
    $set [GLOBAL|SESSION] sql_mode='modes'
    //TRADITIONAL эквивалентен следующим режимам:
    STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, ERROR_FOR_DIVISION_BY_ZERO, and NO_AUTO_CREATE_USER

  10. Изменение пароля ROOT

    Это может показаться элементарным, но знание того, как изменять пароль ROOT, одинаково важно, независимо от того, находится ли он в вашей домашней операционной системе или на серверах MySQL. Вот как настроить пароль ROOT и как изменить пароль пользователя ROOT.

    $mysqladmin -u root password [введите пароль рут]
    //Изменение пароля от root
    $mysqladmin -u root -p [введите старый пароль]  [Нажмите энтер и после введите новый пароль, нажмите энтер]

    //Использование sql комманд
    $mysql -u root -p
    $use mysql;
    //где 'username' имя пользователя, которому меняем пароль
    $update user set password=PASSWORD (тут введите новый пароль) where User = 'username';
    //перезагрузите привелегии
    $flush privileges;
    $quit

  11. Бэкап базы данных используя Mysqldump комманды

    Простой и понятный, ни в коей мере не отрицает важность или удобство в мире PHP и MySQL. Самое важное - это вовремя делать резервные копии баз данных. И как только вы запомнили «Изменение пароля ROOT» (# 10 выше), вы, естественно, запомните этот чрезвычайно важный пункт. Обратите внимание, насколько похожи команды для этого действия. Чтобы создать резервную копию, выполните следующие действия.

    $mysqldump –user [user name] –password=[password] [database name] > [dump file]
    //Так же вместо “user” и “password” вы можете использовать короткие версии “--u” или “--p”
    //Бэкап нескольких баз
    mysqldump –user [user name] –password=[password] [название первой бд] [название второй бд] > [dump file]
    //Чтобы забэкапить все базы - добавьте следующий оператор [--all-databases].

  12. Исправление файлов конфигурации

    Некоторые советы и приемы в MySQL удивительно удобны. И еще есть такие инструменты, как MySQL Tuner. Это Perl-скрипт, который может оптимизировать вашу производительность, предлагая изменения в конфигурационных файлах.

    Поскольку MySQL Tuner не является единственной утилитой для MySQL, существует множество настроек и модов, которые могут быть применены. Это то, что может использоваться новичками и профессионалами, но чем больше он используется, тем больше настроек вы можете научиться применять для собственного использования.

    Руководство пользователя - man db и все примечания есть на официальной странице проекта. MySQL Tuner должен быстро стать вашим инструментом для ускорения работы MySQL и тестирования ваших файлов конфигурации.

  13. Идентификация Slow Queries

    Просто потому, что MySQL не отслеживает и не записывает медленные запросы по умолчанию, это не означает, что вы не можете заставить начать это делать. Как мы узнали из этих советов, MySQL имеет много функций за пределами настроек по умолчанию, которые могут помочь пользователю. Включите редактирование журнала Slow Queries в файле конфигурации my.cnf, а затем выполните следующие команды в mysqld:

    $long_query_time = 1
    $log-slow-queries = /var/log/mysql/mysql-slow-query.log


    «1» означает, что любой запрос длиной более 1 секунды будет занесен в журнал. По умолчанию установка равна нулю. После внесения изменений в настройку сервер необходимо перезапустить, чтобы подтвердить изменения.

    Теперь, когда запрос, который занимает слишком много времени, найден, используйте команду EXPLAIN, которую мы обсуждали ранее (# 6), чтобы узнать, почему она так долго выполняется.
  14. Автокоинкремент: сброс

    Одной из великих функций по умолчанию MySQL является индекс автоинкрементной колонки. При создании новой строки программа автоматически вычисляет и применяет значения к таблице. Однако это значение по умолчанию не всегда необходимо в его настройках по умолчанию. Несколько полезных команд для изменения настроек, которые в конечном итоге потребуются всем.

    Reset Autoincrement Directly
    ALTER TABLE [table name] AUTO_INCREMENT =1;
    Drop Table and Recreate
    DROP TABLE [table_name];
    CREATE TABLE [table_name] {….};

  15. Разбиение таблиц MySQL

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

    Единственным решением является создание разделов. Они могут быть настроены так, чтобы включать в себя любое количество строк и столбцов, которые вам нравятся. Самой большой особенностью этого, конечно, является сокращение времени поиска. В конце концов, никто не хочет ждать, пока выполняется запрос. (Обратите внимание, что не все версии MySQL допускают разбиение таблиц. Запустите SHOW PLUGINS, чтобы определить, есть ли такая возможность в вашей версии)

    Наиболее распространенными разделами будут RANGE. Допустим, у нас была таблица университетов, организованная по дате их основания (для упрощения). Разделы RANGE будут перечислять их по дате создания независимо от того, в каком порядке они находятся. Это будет выполнено следующим образом:

    CREATE TABLE founded (order_date DATETIME NOTNULL –omit other columns)
    PARTITION BY RANGE (YEAR (order_date))
    PARTITION p_1900 VALUES LESS THAN (1900),
    PARTITION p_2013 VALUES LESS THAN (2013)
    PARTITION p_all VALUES LESS THAN MAXVALUE ) ;


    Итак, теперь у нас будут все Университеты, созданные с 0 до 1900 года. Это будет большинство школ Лиги плюща. Второй столбец будет содержать до 2013 года. Последняя команда покажет все остальное. Итак, давайте просто скажем, что мы забыли добавить год, когда был основан университет. Он появится в первом столбце.
  16. ENUMS и SQL

    ENUMS или перечисления могут быть хитрым инструментом в MySQL, но не следует спешить. Пользователи PostgreSQL поддерживают такие функции, как CREATE DOMAIN и CREATE TYPE. Но MySQL не поддерживает. Соблюдайте правила ENUM для MySQL. Это сэкономит кучу времени.
  17. Храните IP-адреса как UNSIGNED INT

    Простой и бесценный совет. Хранение IP-адресов таким образом фактически позволяет MySQL хранить их как целочисленные значения. Используйте INET_ATON () для преобразования целевого IP в целое. Любой знакомый с PHP может вспомнить аналогичную функцию, называемую ip2long.
  18. Использование индексов для создания таблиц

    Индекс может быть создан во время создания самой таблицы.

    CREATE TABLE records (
    name VARCHAR(50),
    age INT,
    id_num INT, INDEX (id)
     
    )
     
    Для создания индекса у нескольких столбцов
     
    ALTER TABLE (records ADD INDEX id(id_num),
    ADD INDEX name(name);.

  19. Вертикальное разделение

    Это просто подсказка для упрощения просмотра или организации таблиц. Можно использовать для структурирования таблиц в вертикальном порядке. Так же используется в качестве инструмента повышения производительности. Однако нужно учесть, что вертикальное разбиение не будет работать с версией 5.1.
  20. Системы хранения данных

    В MySQL есть два основных механизма хранения. Вы можете выбрать InnoDB или MyISAM. Мы кратко поговорили о некоторых трюках с MyISAM и остались далеко от InnoDB. Но это все личные предпочтения. InnoDB имеет тенденцию быть немного более сложным и более трудным для некоторых в использовании. Если есть сомнения, попробуйте оба. Но для начинающих лучше работать с MyISAM. Скорее всего, вы на нем и останетесь.


10 май 2017, 15:18
Профиль ICQ WWW
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 


Кто сейчас на конференции

Зарегистрированные пользователи: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Мобильный вид
Powered by phpBB® Forum Software © phpBB Group

[ Время выполнения: 0.090s | 20 Запросов | GZIP : Вкл ]