Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 130 из 133 ПерваяПервая ... 30 80 120 128 129 130 131 132 ... ПоследняяПоследняя
Показано с 1,291 по 1,300 из 1325
  1. #1291
    Аватар для execution
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.03.2018
    Сообщений
    255
    Репутация:
    24 ±
    Был ли у кого-то опыт с использованием хранимых процедур для игровых серверов? Если да - в каких случаях?

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

    Статус
    Оффлайн
    Регистрация
    01.09.2019
    Сообщений
    121
    Репутация:
    26 ±
    Цитата Сообщение от execution Посмотреть сообщение
    Был ли у кого-то опыт с использованием хранимых процедур для игровых серверов? Если да - в каких случаях?
    Когда это действительно нужно, когда нужно записать куда-то промежуточные данные для запросов. Банальный пример (хотя должен работать DELETE CASCADE). Мы удаляем аккаунт игрока: нужно удалить все данные и в других таблицах, кроме users. Если это делать через запросы получается каша из нескольких запросов, когда можно вызывать хранимую процедуру и это будет куда красивее, хотя повторюсь, что на другие таблицы должен работать DELETE CASCADE, если мы удаляем данные в users, то все остальные данные игрока должны автоматом удалится, но во всех модах, которые в паблике нет связей с таблицами через foreign key

  3. #1293
    Аватар для execution
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.03.2018
    Сообщений
    255
    Репутация:
    24 ±
    Да, на счёт этого всё настроено. Спасибо

  4. #1294
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от tnc Посмотреть сообщение
    Когда это действительно нужно, когда нужно записать куда-то промежуточные данные для запросов. Банальный пример (хотя должен работать DELETE CASCADE). Мы удаляем аккаунт игрока: нужно удалить все данные и в других таблицах, кроме users. Если это делать через запросы получается каша из нескольких запросов, когда можно вызывать хранимую процедуру и это будет куда красивее, хотя повторюсь, что на другие таблицы должен работать DELETE CASCADE, если мы удаляем данные в users, то все остальные данные игрока должны автоматом удалится, но во всех модах, которые в паблике нет связей с таблицами через foreign key
    Ну автоматическое изменение/удаление данных в таблицах лучше делать через внешние ключи (связи), а не через процедуры. Ни к чему самостоятельно изобретать велосипед. И то, даже тут нужно работать с внешними ключами умеючи (как, собственно, и со всем в MySQL).
    А в SAMP, в целом, MySQL используют на крайне примитивном уровне. Для большинства скриптеров MySQL - это какая-то волшебная штука, которая, вроде как, увеличивает скорость работы сервера.

    Цитата Сообщение от execution Посмотреть сообщение
    Был ли у кого-то опыт с использованием хранимых процедур для игровых серверов? Если да - в каких случаях?
    1) Длинные запросы (не так много смысла в этом, но как вариант).
    2) Часто повторяющиеся запросы.
    3) Написание целых скриптов, которые бы выполнялись на стороне MySQL-сервера (например, вот это извращение вполне можно реализовать в виде процедуры, переложив всю возню с циклом на плечи MySQL).
    и т.п.

    Ну и ещё тогда советую обратить своё внимание, как минимум, на эвенты. Тоже может быть полезно для уменьшения лишних взаимодействий между игровым сервером и БД.
    Последний раз редактировалось DeimoS; 18.07.2020 в 11:57.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    09.03.2018
    Сообщений
    255
    Репутация:
    24 ±
    Есть инвентарь, в котором могут быть комбинирующие предметы (то есть добавляться будет в один уже существующий слот).
    Вопрос про добавление этих самых комбинирующих предметов. Когда будем добавлять сразу больше 1 комбинирующего предмета, то придётся циклом добавлять все эти предметы (а там и запросы в бд и т.п.).
    Так вот как скажется такой выбор добавления на большом онлайне и стоит ли пересмотреть механизм добавления?

  7. #1296
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от execution Посмотреть сообщение
    Есть инвентарь, в котором могут быть комбинирующие предметы (то есть добавляться будет в один уже существующий слот).
    Вопрос про добавление этих самых комбинирующих предметов. Когда будем добавлять сразу больше 1 комбинирующего предмета, то придётся циклом добавлять все эти предметы (а там и запросы в бд и т.п.).
    Так вот как скажется такой выбор добавления на большом онлайне и стоит ли пересмотреть механизм добавления?
    Не очень понятно о каких запросах идёт речь. Выдаёшь ты, например, 300 патронов к МР5, а в одном слоте у тебя может не больше 100 патрон храниться. Соответственно, у тебя будет всего 3 запроса в БД на обновление данных о содержимом слотов. А все проверки на содержимое слотов и т.п. будут происходить на стороне сервера.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    09.03.2018
    Сообщений
    255
    Репутация:
    24 ±
    Не могу понять как лучше составить индексы.
    Есть столбцы type, account_id.

    При загрузке я обращаюсь только к account_id.
    При обновлении к type AND account_id.

    Думал сделать составной (type_account_id), затем отдельно для type и account_id.
    Как лучше будет сделать?

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от execution Посмотреть сообщение
    Не могу понять как лучше составить индексы.
    Есть столбцы type, account_id.

    При загрузке я обращаюсь только к account_id.
    При обновлении к type AND account_id.

    Думал сделать составной (type_account_id), затем отдельно для type и account_id.
    Как лучше будет сделать?
    Если к type отдельно не обращаешься, то достаточно сделать составной индекс
    1. account_id, type

    Если же планируешь отдельно обращаться и к type, то тогда создай дополнительный индекс для этого поля (для поля account_id отдельный индекс создавать не нужно)


    В случае с составными индексами MySQL позволяет обращаться только к отдельным индексам, если они идут в порядке объявления.
    То бишь, если имеется составной индекс:
    1. index_1, index_2, index_3, index_4

    То ты можешь использовать при выборке:
    1. index_1, index_2, index_3
    2. //...
    3. index_1, index_2
    4. //...
    5. index_1

    И такие запросы будут обрабатываться так же, как если бы ты создал отдельные индексы для этих столбцов.

    Но, например, вот так использовать составной индекс:
    1. index_2, index_3, index_4
    2. //...
    3. index_1, index_2, index_4
    4. //...
    5. index_4

    Уже не получится и в этом случае MySQL не будет использовать индексы при выборке данных.

    Вообще в ситуациях, когда у тебя запрос, потенциально, будет работать с большим количеством данных, лучше заранее тестировать то, как БД будет обрабатывать твой получившийся запрос, ибо оптимизатор MySQL довольно прихотливый и очень легко простым запросом заставить БД, например, копировать содержимое всей таблицы, к которой ты обращаешься, во временную таблицу, из которой MySQL уже и будет делать выборку, грубо говоря. В общем, лучше почитать и о средствах диагностики, которые имеются в MySQL, и о том, каких вещей лучше избегать в запросах.
    Последний раз редактировалось DeimoS; 07.04.2021 в 05:22.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  10. Пользователь сказал cпасибо:
    execution (07.04.2021)
  11. #1299
    Аватар для Duck_Leo
    Пользователь

    Статус
    Оффлайн
    Регистрация
    06.03.2017
    Адрес
    Россия
    Сообщений
    15
    Репутация:
    0 ±
    Есть инвентарь оружия на textdraw'ах. Как сделать так, чтобы при наводке на textdraw с моделью - появлялся другой textdraw с нужным мне текстом, а потом исчезал. На скрине обведён зелёным textdraw, который должен по задумке появляться при наводке курсором (не кликая на него)

    :

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

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

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

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

    Steve Pavlina

 

 
Страница 130 из 133 ПерваяПервая ... 30 80 120 128 129 130 131 132 ... ПоследняяПоследняя

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

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

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

Ваши права

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