>
Tutorial 2026-02-18

Guia de Base de Dados para FiveM - MySQL, oxmysql e Gestão de Dados

TDYSKY

TDYSKY

Fundador & Lead Developer na Agency Scripts

Por que os bancos de dados são importantes no FiveM

Todo servidor FiveM sério precisa de armazenamento de dados persistente. Inventários de jogadores, contas bancárias, propriedade de veículos, contatos telefônicos e registros de trabalho, todos precisam sobreviver às reinicializações do servidor. MySQL é o sistema de banco de dados padrão usado em todo o ecossistema FiveM, sendo MariaDB um fork popular que oferece desempenho aprimorado. Compreender como configurar, consultar e otimizar seu banco de dados é essencial para construir servidores de roleplay confiáveis que possam lidar com centenas de jogadores simultâneos sem perda de dados.

Configurando oxmysql

O recurso oxmysql é o padrão moderno para conectividade MySQL no FiveM, substituindo as antigas bibliotecas mysql-async e ghmattimysql. Para configurá-lo, baixe a versão mais recente, coloque-a em sua pasta de recursos e configure a cadeia de conexão em server.cfg com set mysql_connection_string. A cadeia de conexão segue o formato mysql://user:password@host/database e oferece suporte a parâmetros adicionais para pool de conexões, tempos limite e SSL. Certifique-se de que o oxmysql seja iniciado antes de qualquer recurso que dependa dele, colocando-o no início de sua ordem de garantia.

Escrevendo consultas

oxmysql fornece vários métodos de consulta: MySQL.query para instruções SELECT que retornam linhas, MySQL.update para instruções UPDATE e DELETE que retornam contagens de linhas afetadas, MySQL.insert para instruções INSERT que retornam o último ID de inserção e MySQL.scalar para consultas que retornam um único valor. Sempre use consultas parametrizadas com o espaço reservado ? para evitar ataques de injeção de SQL. Passe parâmetros como uma tabela no segundo argumento, em vez de concatenar valores diretamente nas strings de consulta.

Padrões e promessas assíncronas

Todas as operações do oxmysql são assíncronas para evitar o bloqueio do thread do servidor durante a comunicação do banco de dados. Você pode usar a sintaxe no estilo de retorno de chamada, onde passa uma função como último argumento, ou usar a sintaxe baseada em promessa com MySQL.query.await dentro de um Citizen.CreateThread. A sintaxe await é lida de forma mais limpa e evita o aninhamento de retorno de chamada, mas lembre-se de que ela só pode ser usada dentro de corrotinas. Para carregar os dados de inicialização do servidor, use a função MySQL.ready para garantir que a conexão com o banco de dados seja estabelecida antes de executar as consultas iniciais.

Práticas recomendadas de design de esquema

Projete suas tabelas de banco de dados com índices adequados nas colunas que você consulta com frequência, como identificadores de jogadores. Use os tipos de dados apropriados para cada coluna para minimizar o armazenamento e melhorar a velocidade da consulta. Armazene dados JSON em colunas TEXT quando precisar de esquemas flexíveis, mas evite consultar frequentemente dentro de estruturas JSON, pois isso ignora a otimização do índice. Crie relacionamentos de chave estrangeira entre tabelas relacionadas para manter a integridade dos dados e considere o uso de transações quando várias inserções ou atualizações relacionadas precisarem ser bem-sucedidas ou falharem juntas.

Otimização e Manutenção

Monitore o desempenho do seu banco de dados verificando logs de consultas lentas e analisando planos de execução com EXPLAIN. Armazene em cache os dados acessados ​​com frequência na memória do servidor usando tabelas Lua para reduzir viagens de ida e volta ao banco de dados. Implemente o pool de conexões por meio da configuração do oxmysql para lidar com consultas simultâneas com eficiência. Agende tarefas regulares de manutenção do banco de dados, como otimização de tabelas e limpeza de registros órfãos de jogadores excluídos. Faça backup do seu banco de dados diariamente usando mysqldump ou soluções de backup automatizadas para evitar perda catastrófica de dados devido a falhas de hardware ou tabelas corrompidas.

Partilhar este artigo

Pronto para melhorar o teu servidor?

Explora os nossos scripts FiveM premium na loja Agency Scripts ou junta-te à nossa comunidade no Discord para suporte e atualizações.