У меня есть долгоживущая программа на C++, которая выполняет множество операторов SQL в базе данных MySQL. В настоящее время я использую кучу статического sql :: PreparedStatement *, созданного (один раз) в каждой функции, которая должна быть SELECT/INSERT/UPDATE, а затем они снова и снова перезаписываются и повторно выполняются. Это хорошо работает, но мне интересно о сервере и программа ресурса использования:MySQL PreparedStatement Предостережения
- Где каждый PreparedStatement хранить свою информацию (клиент/сервер/оба?)
- Должен ли я беспокоиться о один PreparedStatement будет плохо , но все в порядке?
- Должен ли я обновлять/воссоздавать PreparedStatements?
- Открытые, но незанятые PreparedStatements связывают значительные ресурсы БД между использованием?
- Есть ли лучший способ обработать активность БД в программе, которая должна выполнять 20-30 различных типов запросов, когда запросы происходят иногда, а не в каком-либо конкретном порядке?
Спасибо!
Спасибо, это полезная информация. У вас есть (или знаете, где найти) приблизительные числа для использования памяти или максимальные подготовленные выписки за сеанс? Если я значительно ниже пределов, я не буду беспокоиться о разработке какой-то сложной структуры для этого, но если я буду близок, я могу теперь укусить пулю. (Все утверждения довольно просты - INSERT или UPDATE или одиночные таблицы SELECT. Ничто из того, что должно сделать работу БД очень трудной, за исключением того, что иногда может быть возвращено много строк.) –
См. Мое редактирование. Надеюсь, вы сочтете это полезным. – DNT
Элемент конфигурации max_prepared_statement_count очень обнадеживает (особенно, поскольку это значение на сервере). Я знаю, какой вид использования мой сервер должен увидеть, и мое ожидаемое количество PreparedStatements значительно ниже 16k. Я буду мешать с инструментами памяти, но на самом деле, если PreparedStatement не выделяет много мегабайт (что кажется маловероятным), у меня не будет никаких проблем. Еще раз спасибо! –