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

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

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

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

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

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

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

    Код:
    размер шапки = 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
    Адрес
    Восточный Мордор
    Сообщений
    4,761
    Репутация:
    1746 ±
    Цитата Сообщение от UnO Посмотреть сообщение
    Стоит ли работать с кешем вместо постоянных запросов?
    Если сама система позволяет это, подразумевая то, что данные останутся актуальными во время работы с кэшем - да.
    Если нет - тут уже нужно смотреть на саму систему и либо постоянные запросы отправлять, либо продумывать другие варианты (переписать систему иначе/реализовать кэш самостоятельно, загружая данные в массив и все изменения производя именно с массивом, периодически синхронизируя их с базой).

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

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

    Steve Pavlina

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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



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

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


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

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

    Steve Pavlina

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

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

 

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

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

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

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

Ваши права

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