Funzionalità avanzate di MySQL

MySQL è uno dei sistemi di gestione di database relazionali più utilizzati al mondo. Oltre alle funzionalità di base come CRUD (Create, Read, Update, Delete), MySQL offre una vasta gamma di funzionalità avanzate per supportare applicazioni complesse, garantire alte prestazioni e sicurezza. In questo articolo esploriamo alcune delle più importanti.

1. Stored Procedures e Functions

Le stored procedures e le funzioni consentono di incapsulare logica SQL riutilizzabile lato server.

DELIMITER //
CREATE PROCEDURE GetUserById(IN userId INT)
BEGIN
  SELECT * FROM users WHERE id = userId;
END //
DELIMITER ;

2. Trigger

I trigger permettono l'esecuzione automatica di codice SQL in risposta a eventi specifici (INSERT, UPDATE, DELETE).

CREATE TRIGGER before_insert_users
BEFORE INSERT ON users
FOR EACH ROW
SET NEW.created_at = NOW();

3. Views

Le viste consentono di creare rappresentazioni virtuali di query complesse.

CREATE VIEW active_users AS
SELECT id, name FROM users WHERE status = 'active';

4. Partizionamento delle Tabelle

Il partizionamento permette di suddividere una tabella in più partizioni per migliorare le performance.

CREATE TABLE sales (
  id INT,
  sale_date DATE
) PARTITION BY RANGE (YEAR(sale_date)) (
  PARTITION p2023 VALUES LESS THAN (2024),
  PARTITION p2024 VALUES LESS THAN (2025)
);

5. Replica e High Availability

MySQL supporta la replica master-slave e la replica GTID per garantire alta disponibilità e scalabilità.

La configurazione richiede la modifica del file my.cnf e l'utilizzo di comandi come:

CHANGE MASTER TO MASTER_HOST='master_host',
MASTER_USER='replica_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS= 107;

6. JSON e Funzioni NoSQL

MySQL permette di memorizzare e interrogare dati in formato JSON.

CREATE TABLE products (
  id INT,
  data JSON
);

SELECT JSON_EXTRACT(data, '$.price') FROM products;

7. CTE (Common Table Expressions) e Window Functions

Le CTE migliorano la leggibilità delle query, mentre le window functions permettono analisi avanzate.

WITH recent_orders AS (
  SELECT * FROM orders WHERE order_date > '2025-01-01'
)
SELECT customer_id, COUNT(*) OVER (PARTITION BY customer_id)
FROM recent_orders;

Queste funzionalità avanzate permettono a MySQL di essere competitivo anche in contesti enterprise, fornendo strumenti per ottimizzare, organizzare e scalare efficacemente i dati.

Torna su