Ответы пользователя по тегу MySQL
  • Как ускорить UPDATE MySQL?

    @Fortop
    Tech/Team lead
    Задача оптимизируется тривиальным образом.

    Realtime счетчики переносятся Redis (другое key-value хранилище), а апдейт в БД делать раз в сутки, например, по крону.

    Естественно, что если нужны актуальные данные на текущий момент, то их необходимо брать из Redis
    Ответ написан
    2 комментария
  • Как правильно спроектировать данную БД?

    @Fortop
    Tech/Team lead
    Самый радикальный пересмотреть список атрибутов писателей.
    Вы уверены что эти "уникальные" атрибуты в таком количестве и такой важности, что требуют все отдельных таблиц?

    Если отличия в категориях в 2-3 атрибута, то можно расширить число полей в таблице Писатели.

    Если сильно больше, то завести одну таблицу "Атрибуты писателей" куда и сохранять "ид писателя", "имя атрибута", "значение атрибута"
    Ответ написан
    Комментировать
  • Какую сделать структуру таблицы в MySQL, чтоб менять позицию записи с минимальным усилием сервера?

    @Fortop
    Tech/Team lead
    Вопрос "минимальных усилий" для списка из 48 товаров (и даже 10000) не имеет значения.

    Он у вас возникнет если эти изменения вы пожелаете делать десятки раз в секунду на базе под нагрузкой в десятки/сотни запросов в секунду.

    До тех пор варианты 1 и 2 равнозначны.
    Ответ написан
    Комментировать
  • Много много разного html - отдельные файлы или БД?

    @Fortop
    Tech/Team lead
    Хранить в файлах, если не требуется делать выборки/фильтрации/расчёты над файлами и их содержанием.

    У нас сервер (один) держит десятки миллионов файлов кеша (естественно не в одной папке)
    Аналогично с БД - 900 млн записей средним размером 2 кб.

    Все живое.

    Использование nosql в общем случае для подобного нецелесообразно.
    Ответ написан
  • Хранить данные в бд или делать расчеты каждый раз?

    @Fortop
    Tech/Team lead
    Вопрос, конечно, не про калькулятор.

    Хранить или не хранить решается по нескольким критериям.
    1. Как вы указали в случае сложных расчётов (хранение выступает аналогом кеширования)
    2. Данные будут использоваться для агрегатов (других расчётов и статистики)

    Если ответ "да" на один из пунктов, то хранить.
    Если везде ответ "нет", то не хранить.
    Ответ написан
    3 комментария
  • MyISAM и InnoDB - Что быстрее работает на чтение а что на запись?

    @Fortop
    Tech/Team lead
    Все зависит именно от нюансов.

    Если клиент один, и на ранних версиях то чтение/запись быстрее в MyISAM
    Если клиентов пишущих много, то быстрее InnoDB
    Ответ написан
    4 комментария
  • Как правильней реализовать combobox в базе?

    @Fortop
    Tech/Team lead
    К mysql данный вопрос имеет странное отношение, особенно с учётом просьбы примера в html...

    Механизма на самом деле всего три.

    1. Любой пользователь может вносить новые значения.
    2. Только отдельные люди могут редактировать список добавляя или удаляя значения.
    3. Никто не может его изменить, только выбрать из существующих.

    Выбор конкретного варианта зависит скорее от бизнеспроцесса.
    То есть, если все пользователи это исключительно сотрудники и их немного, то можно им разрешить работать по п.1

    Если пользователей много (десятки, сотни, тысячи), то с большой вероятностью лучше п.2, когда лишь ограниченный круг ответственных лиц имеет право на корректировку.

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

    Во всех трех случаях данные такого вида нужно хранить в отдельной таблице и строить связи с другими по ID характеристики.
    Плюс рекомендую учесть возможность пометить их как удалённый при этом не удаляя физически из БД, чтобы не выводить в списке вариантов выбора для пользователей, но при этом иметь адекватный вид в архивах прошлых операций, когда эти данные можно было выбирать.
    Ответ написан
  • Как сортировать leftjoin?

    @Fortop
    Tech/Team lead
    Не должен 51 выводить.

    'sortdir' => array(
            'LastComment' => 'ASC',
          ),

    Поскольку ASC это сортировка по возрастанию, то есть первым будет элемент с самым маленьким id.
    Если нужен с самым большим ID, то и использовать нужно DESC
    Ответ написан
    Комментировать
  • Как сохранить состояние дельта-индекса sphinx?

    @Fortop
    Tech/Team lead
    Как альтернатива вышесказанному — вы же можете прочитать docid последнего проиндексированного документа из самого индекса.
    Ответ написан
    Комментировать
  • Синхронизация: Удаление данных

    @Fortop
    Tech/Team lead
    Почему не настроить репликацию?
    Ответ написан
    2 комментария