Skip to content
Back to services

Databases

Fast, secure and explained databases

The database is usually the first thing to fall short when a project grows. Choosing well, setting it up for your server and organizing large tables makes the difference between a page that flies and one that crawls.

Swipe the diagram to see all of it

◆tiendaPHP⬢apiAdonisJS⌕October ordersWHERE creado >= '2026-10-01'◫pedidos1,000,000+ rows▤pedidos_2026_07untouched▤pedidos_2026_08untouched▤pedidos_2026_09untouched▤pedidos_2026_10read
  • Queries from the apps
  • Only the needed partition is read

An orders table with over a million rows, split by month. When the shop or the API asks for October orders, PostgreSQL only reads the October partition and leaves the rest untouched: less disk, less memory and faster answers.

MariaDB or PostgreSQL, ready

When you connect a server you choose the database and SERVILINUX installs it with your system’s version, listening only inside the server.

Shared with your other servers, without opening it to the world

If an app on another server needs the database, you open its port only to that IP with the panel firewall.

Watched by Sentinel

Connections, queries per second, cache and disk use of MariaDB and PostgreSQL, with alerts and history.

Eisac helps you tune it

Ask how to fit the settings to your server’s memory, which indexes are missing or how to split a table that keeps growing. It explains every change before you apply it.

Example conversation
My server has 16 GB of RAM and an SSD. How do I tune PostgreSQL for an orders table with over a million rows that we mostly query by month?
Eisac

First, memory. With 16 GB and the database as the main service, this is a good starting point:

# /etc/postgresql/17/main/conf.d/servilinux.conf
# 16 GB RAM, SSD disk
shared_buffers = 4GB
effective_cache_size = 12GB
work_mem = 32MB
maintenance_work_mem = 1GB
random_page_cost = 1.1
effective_io_concurrency = 200

Then split the table by month. That way each query reads only the month it needs and archiving old months is instant:

CREATE TABLE pedidos (
  id          bigserial,
  creado      timestamptz NOT NULL,
  cliente_id  bigint NOT NULL,
  total       numeric(12,2),
  PRIMARY KEY (id, creado)
) PARTITION BY RANGE (creado);

CREATE TABLE pedidos_2026_10 PARTITION OF pedidos
  FOR VALUES FROM ('2026-10-01') TO ('2026-11-01');

CREATE INDEX ON pedidos (cliente_id, creado);

Create each month’s partition before it starts; you can schedule a task that does it automatically. If your apps also run on this server, lower shared_buffers to 3 GB. Shall I review the slowest queries first?

Coming soon to the panel: create databases and users with passwords that never travel in clear text, scheduled backups with restore and secure access from DBeaver or TablePlus.

In SERVILINUX

How it is done

  1. 1
    Choose your database

    MariaDB or PostgreSQL when you connect the server.

  2. 2
    Connect your project

    Put the connection details in the project variables.

  3. 3
    Turn it on in Sentinel

    Its metrics and alerts appear next to the server’s.

  4. 4
    Tune it with Eisac

    Settings, indexes and partitions explained step by step.