Дмитрий Сергеевич (axshavan) wrote,
Дмитрий Сергеевич
axshavan

Category:

Кэширование запросов к БД

По следам Степана Никитовича (stepank) я соорудил конструкцию, позволяющую кэшировать запросы к базе данных. Не все, а только селекты - остальной кэшировать как бы и нельзя вовсе. Механизм такой, значит: класс по работе с БД, когда ему говорят: " а ну-ка, выбери мне это!" делает из "этого" хэш, а затем смотрит в папочке с кэшем, есть ли файлик с таким именем. А до этого предварительно был сделан запрос show table status, чтоб узнать время последнего обновления таблиц. Так вот, если у найденного файлика время изменения больше, чем время изменения таблицы, то запрос к БД не делается, а результат вытаскивается из файла. Там он лежит в сериализованном виде. Ну в противном случае этот файл делается из результата выполненного запроса.

Вроде всё просто, ну у меня три, значит, вопроса, над которыми я ломаю голову.
Во-первых, не может ли десереализация строки в массив занимать времени больше, чем запрос к базе данных?
Во-вторых, возможна ситуация (чисто гипотетически), что хэши разных запросов совпадут. Это, конечно, маловероятно, но было бы неприятно, если такое произойдет.
В-третьих, show table status для InnoDB не показывает время последнего изменения таблиц! Я не знаю, как работает этот запрос, но, скорее всего, он смотрит дату изменения файла с данными таблицы. В иннодб такого файла нет, все данные всех таблиц перемешаны и размазаны по логу транзакций. Как узнать дату последнего изменения таблиц в этом случае, я не знаю.
Tags: web
Subscribe

  • Признание ошибок

    Иногда признавать свои ошибки очень просто. Например, моя теория о том, что я, такой молодец, по маркам восстановил историю экономической жопы в…

  • Первый день тридцать восьмого

    Настроение сегодня получше, я бы даже сказал, отличное. Про процесс сброса веса. Покрутился перед зеркалом, пофотографировался. Если я и похудел, то…

  • Улов

    Съездил вчера с товарищем на фотопрогулку. Мы с ним оба любим стрит-фото и "чёрно-белое говно", так что нормально вместе походили. Он потащил меня на…

  • Post a new comment

    Error

    Comments allowed for friends only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 18 comments

  • Признание ошибок

    Иногда признавать свои ошибки очень просто. Например, моя теория о том, что я, такой молодец, по маркам восстановил историю экономической жопы в…

  • Первый день тридцать восьмого

    Настроение сегодня получше, я бы даже сказал, отличное. Про процесс сброса веса. Покрутился перед зеркалом, пофотографировался. Если я и похудел, то…

  • Улов

    Съездил вчера с товарищем на фотопрогулку. Мы с ним оба любим стрит-фото и "чёрно-белое говно", так что нормально вместе походили. Он потащил меня на…