ФорумПрограммированиеPHP для идиотов → Всегда задавался этим вопросом, Myisam или innodb

Всегда задавался этим вопросом, Myisam или innodb

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 1 августа 2011 г. 17:09, спустя 2 минуты 33 секунды

    безумие

    верно, особенно если про биллинг внутри счетов компании. запрос упал и пизда, бабло спимали но не прибавили :-))
    Сапожник без сапог
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 1 августа 2011 г. 21:54, спустя 4 часа 44 минуты 49 секунд

    С деньгами то конечно другой вопрос, а если еще и деньги большие то нахуй вообще mysql)
  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz 2 августа 2011 г. 5:49, спустя 7 часов 55 минут 40 секунд

    дык че стригеррами, у меня они нивкакую не встают

    уже все варианты перепробовал, кстати странно но в документации я про них ничего не наяшел
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 2 августа 2011 г. 14:45, спустя 8 часов 55 минут 24 секунды

    , кстати странно но в документации я про них ничего не наяшел

    http://dev.mysql.com/doc/refman/5.5/en/triggers.html
    дык че стригеррами, у меня они нивкакую не встают

    версия какая MySQL сервера?
    Спустя 226 сек.
    а да делимитер юзай:
    http://dev.mysql.com/doc/refman/5.1/en/stored-programs-defining.html
    Work, buy, consume, die
  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz 3 августа 2011 г. 5:16, спустя 14 часов 31 минуту 48 секунд

    версия 5.1.54

    блядь, а я то губу раскатал
  • mexys

    Сообщения: 19 Репутация: N Группа: Кто попало

    Spritz 3 августа 2011 г. 8:29, спустя 3 часа 12 минут 20 секунд

    Триггеры есть с 5.0.2, а вот END в коде я не увидел
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 3 августа 2011 г. 11:28, спустя 2 часа 59 минут 42 секунды


    версия 5.1.54

    блядь, а я то губу раскатал

    Support for triggers is included beginning with MySQL 5.0.2.

    И ещё раз: http://dev.mysql.com/doc/refman/5.1/en/stored-programs-defining.html


    DROP TRIGGER IF EXISTS `TRIGGER_TABLE2_AI`;
    DROP TABLE IF EXISTS `table2`;
    DROP TABLE IF EXISTS `table1`;


    CREATE TABLE `table1` (
    `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    `count` INTEGER UNSIGNED NOT NULL DEFAULT 0,
    PRIMARY KEY(`id`)
    ) ENGINE='InnoDB';

    CREATE TABLE `table2` (
    `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    `table1_id` INTEGER UNSIGNED NOT NULL DEFAULT 0,
    PRIMARY KEY(`id`)
    ) ENGINE='InnoDB';

    ALTER TABLE `table2`
    ADD CONSTRAINT `FK_TABLE2_TABLE1_ID`
    FOREIGN KEY `FK_TABLE2_TABLE1_ID` (`table1_id`)
    REFERENCES `table1`(`id`)
    ON DELETE RESTRICT
    ON UPDATE RESTRICT;

    # заменяем разделитель с ";" на "//"
    DELIMITER //

    # создаём триггер
    CREATE TRIGGER `TRIGGER_TABLE2_AI` AFTER INSERT ON `table2`
    FOR EACH ROW
    BEGIN
    UPDATE `table1` SET `count`=`count`+1 WHERE `id`=NEW.`table1_id` LIMIT 1;
    # вот тут был косяк, так как MySQL думал, что раз ; получена значит
    # конец выражения достигнут, а так как был BEGIN а END ещё не найден,
    # возникает ошибка, но если использовать замену ; на // как сейчас,
    # ; не будет воспринята как разделитель, и выражение будет считываться,
    # пока не найдётся "//"
    END //
    # конец выражения, все ок, оно валидно с точки срения SQL, так как для BEGIN
    # есть закрывающий END

    # возвращаем разделитель ";", а то и дальше придётся везде вместо ; писать //
    DELIMITER ;
    Work, buy, consume, die
  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz 4 августа 2011 г. 6:35, спустя 19 часов 6 минут 59 секунд

    Nyaah, спасибо большое за то что доходчиво и понятно разьяснил мне.
  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz 7 августа 2011 г. 19:03, спустя 3 дня 12 часов 27 минут

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

  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 11 августа 2011 г. 2:24, спустя 3 дня 7 часов 20 минут

    `last_theme` VARCHAR(100) NULL, – заголовок последней добавленной темы
    `last_theme_date` DATETIME, – дата последней темы
    `last_theme_uid`INT(11) UNSIGNED – id юзера кто добавил
    `last_theme_username` VARCHAR(20) NULL, – имя юзера
    `last_theme_id` INT(11) UNSIGNED – id последней темы


    эти поля калькулируемые какой смысл в них? Я бы посоветовал вместо sql-кеша использовать memcache

Пожалуйста, авторизуйтесь, чтобы написать комментарий!