Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 11
  1. #1
    Аватар для UnO
    Пользователь

    Статус
    Оффлайн
    Регистрация
    20.01.2018
    Сообщений
    52
    Репутация:
    7 ±

    по поводу кеша mysql

    Привет, сразу несколько вопросов интересует:

    1) Есть ли лимит какой-то у кеша?
    2) Сколько примерно памяти(как я понимаю оперативной) занимает сохраненный кеш(cache_save()) таблицы, скажем, на 800 строк и 6 полей?
    3) Если можно как-то посчитать это дело - не откажусь, если кто-то подскажет как (:
    4) Стоит ли работать с кешем вместо постоянных запросов?

  2. #2
    Аватар для x86
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.01.2019
    Сообщений
    41
    Репутация:
    6 ±
    Лимит только один - для каждого запроса только один кеш. А вообще кеш потребляет всегда разное количество памяти, то есть он может выделить еще, если ему не хватает (ествественно в пределах одного процесса). Плагин считает общую длину всех стобцов, поэтому точно сказать сколько будет выделенно - невозможно. Код подсчетка расположен тут.

    Код:
    размер шапки = sizeof(char**) * кол-во строк
    размер строки = sizeof(char*) * (кол-во стобцов + 1) + (длина строки * sizeof(char))
    размер строки += 8 - (размер строки % 8)
    
    размер данных = размер шапки + кол-во строк * размер строки
    Последний раз редактировалось x86; 11.02.2019 в 00:52.

  3. Пользователь сказал cпасибо:
    UnO (11.02.2019)
  4. #3
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от UnO Посмотреть сообщение
    Стоит ли работать с кешем вместо постоянных запросов?
    Если сама система позволяет это, подразумевая то, что данные останутся актуальными во время работы с кэшем - да.
    Если нет - тут уже нужно смотреть на саму систему и либо постоянные запросы отправлять, либо продумывать другие варианты (переписать систему иначе/реализовать кэш самостоятельно, загружая данные в массив и все изменения производя именно с массивом, периодически синхронизируя их с базой).

    В общем, однозначный ответ тут дать не получится.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  5. Пользователь сказал cпасибо:
    UnO (11.02.2019)
  6. #4
    Аватар для UnO
    Пользователь

    Статус
    Оффлайн
    Регистрация
    20.01.2018
    Сообщений
    52
    Репутация:
    7 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Если сама система позволяет это, подразумевая то, что данные останутся актуальными во время работы с кэшем - да.
    Если нет - тут уже нужно смотреть на саму систему и либо постоянные запросы отправлять, либо продумывать другие варианты (переписать систему иначе/реализовать кэш самостоятельно, загружая данные в массив и все изменения производя именно с массивом, периодически синхронизируя их с базой).

    В общем, однозначный ответ тут дать не получится.
      Открыть/закрыть
    В бд есть поля: номер, название, текст.
    В планах сделать диалог, в котором будет список с номерами и названиями. При выборе одного елемента из списка открывается второй диалог с текстом соответствующим выбранному в списке названию(ну и номеру, офк). Во втором диалоге, при нажатии esc(response == 0), возвращаемся к первому(который список). Вот я и думаю, мб лучше вместо отправления select-запроса каждый раз при возвращении в первый диалог, сохранить один раз кэш, глобальный для всех игроков, и доставать данные из него. Тот же прикол и с доставанием текста для второго диалога И при update-запросах от кого-либо просто обновлять кэш.


    лол, пока описывал, сам вкурил, что лучше в таком случае будет юзать массив(тогда при обновлении не нужно будет всю инфу перезаписывать, а можно отдельно ячейку массива). А это то, от чего я хотел уйти в угоду экономии памяти, т.к. диалог этот вызывать надо будет не столь часто, чтобы постоянно хранить все 900 строк * 6 полей в памяти.

    - - - Добавлено - - -

    Хотя, как варик можно загружать кэш при открытии первого диалога и удалять при его закрытии, но тогда рассинхрон может быть, если другой кто-то в это время поменяет что-то в базе.
    Последний раз редактировалось UnO; 11.02.2019 в 03:28.

  7. #5
    Аватар для m1n1vv
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    А какую информацию то выводишь? О чем она?

  8. #6
    Аватар для UnO
    Пользователь

    Статус
    Оффлайн
    Регистрация
    20.01.2018
    Сообщений
    52
    Репутация:
    7 ±
    Цитата Сообщение от m1n1vv Посмотреть сообщение
    А какую информацию то выводишь? О чем она?
    досье на сотрудника гос.фракции

  9. #7
    Аватар для m1n1vv
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Цитата Сообщение от UnO Посмотреть сообщение
    досье на сотрудника гос.фракции
    Может первым диалогом делать выбор фракции, а не весь список?

  10. Пользователь сказал cпасибо:
    UnO (12.02.2019)
  11. #8
    Аватар для UnO
    Пользователь

    Статус
    Оффлайн
    Регистрация
    20.01.2018
    Сообщений
    52
    Репутация:
    7 ±
    Цитата Сообщение от m1n1vv Посмотреть сообщение
    Может первым диалогом делать выбор фракции, а не весь список?
    Ну каждый будет видеть только свою фракцию

  12. #9
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Ну если и отправлять запросы, то тогда выгружай не всех участников фракции каждый раз, а столько, сколько показывается в диалоге. Иначе совсем растратно будет.



    А вообще всё зависит от того, какую информацию ты хочешь показывать о игроках, может ли она меняться во время работы с кэшем, как часто она будет меняться и будет ли критичным то, что в кэше информация будет не совсем актуальной.

    Например, если есть какая-то важная информация, которая обновляется не часто, можно просто отслеживать факт работы с кэшем и всякий раз, когда информация из кэша меняется, сразу обновлять и кэш, повторно отправляя запрос в базу и т.п.
    Хотя в таких случаях, наверное, лучше хранить данные на стороне сервера (глобальный массив), а не в кэше, дабы иметь возможность перезаписывать данные "кэша" без отправки нового запроса (ну параллельно с запросом сразу обновлять данные и в массиве).


    Но это всё звучит как чрезмерное усложнение, на самом деле (а чем сложнее алгоритм, тем он менее устойчив к ошибкам). Если знать все аспекты твоей задачи, то, думаю, всё можно сделать более просто и не менее функционально.
    Скорее всего, все эти извращения не стоят того, чтоб обеспечить игрока актуальной информацией.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  13. #10
    Аватар для UnO
    Пользователь

    Статус
    Оффлайн
    Регистрация
    20.01.2018
    Сообщений
    52
    Репутация:
    7 ±
    В общем, сделаю без списка.
    Всем спасибо, кто отписался.

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

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