Лучшая практика конфигурации Mysql в разработке?

Я включаю следующее во время разработки:

мой.cnf:

[mysqld]
log_slow_queries    = /var/log/mysql/mysql-slow.log
sql_mode            = STRICT_ALL_TABLES

SQL_MODE

STRICT_ALL_TABLES

Включите строгий режим для всех механизмов хранения. Недопустимые значения данных отклоняются.

Например, рассмотрим следующее:

CREATE TABLE `posts` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `title` varchar(200) NOT NULL,
    `date` datetime NOT NULL
);
INSERT INTO `posts` (`title`, `date`) VALUES ('Title text', NULL);

Если вы используете STRICT_ALL_TABLES sql_mode, mysql не выдаст ошибку при попытке вставить значение NULL в столбец NOT NULL, вместо этого mysql вставит данные по умолчанию в зависимости от типа столбца. например для столбца datetime NOT NULL, когда вы вставите значение NULL, mysql по умолчанию установит значение datetime в 0000-00-00 00-00-00.

Строгий режим, в некотором смысле, подобен повышению уровня error_reporting и отображению ошибок в PHP, что является лучшей практикой во время разработки.

ini_set('error_reporting', -1);
ini_set('display_errors', true);

Итак, я думаю, что я ищу, какие конфигурации вы рекомендуете во время разработки и почему?


person Gerard Roche    schedule 10.04.2012    source источник
comment
Есть ли какая-то конкретная причина, по которой вам нужно изменить значения по умолчанию?   -  person Anil Mathew    schedule 10.04.2012
comment
@Anil Mathew Нет. Но, например, установка строгого режима sql_mode может помочь обнаружить потенциальные ошибки или непреднамеренное поведение. Это немного похоже на настройку display_errors=1 и error_reporting(-1) в PHP.   -  person Gerard Roche    schedule 10.04.2012


Ответы (1)


Я бы порекомендовал следующие дополнительные опции:

# creates a innodb file per table instead of having all the tables in a single tablespace file
innodb_file_per_table 

# increase the max allowed packet to a large size for file imports
max_allowed_packet = 32M

# the InnoDB pool size. use up to 80% available RAM for dedicated machines, and as much
# as you can spare for development machines also depending on the size of the databases
# you will be running so that as much of the database as possible fits into memory 
innodb_buffer_pool_size = 512M
person Stephen Senkomago Musoke    schedule 10.04.2012