Questa pagina descrive Calíope 1.8, la versione che sto costruendo adesso. La 1.7 è sull'App Store per Mac, iPad, iPhone, Apple Watch, Apple TV e Apple Vision Pro. Il changelog dice in quale versione è arrivata ogni funzione.

Aggiunge a ogni argomento un pulsante «Apri in Calíope». Funziona solo con l'app installata.

Lista dei processi

Vedere i processi attivi

Elenca le sessioni attive del server.

Dove si trova: Workspace › Strumenti › Processi

Apri Processi dalla barra di navigazione del workspace. La tabella mostra tutti i processi con le colonne: ID, Utente, Host, Database, Comando, Tempo, Stato e SQL.

L'elenco si aggiorna da solo da quando si apre, ogni tanti secondi quanti ne indica Intervallo, e il piè di pagina conta quanto manca al prossimo aggiornamento. ⏸ lo mette in pausa, ▶ lo riprende e ↻ lo rilegge subito. Usa il filtro utente per mostrare solo i processi di un utente specifico. Nella tabella, fai clic o tocca l'intestazione di una colonna per ordinare in base a essa. Su iPhone ogni processo appare su tre righe, senza colonne.

SQL Server

Con SQL Server il menu non ha Kill Query e la barra non offre di Terminare quelle in esecuzione: lì KILL chiude l'intera sessione, non solo la sua query, quindi si può terminare solo la sessione.

ClickHouse

Con ClickHouse ogni riga è una query in corso, non una connessione: l'identificativo è il suo query_id, e porta le due colonne Memoria e Righe lette di ogni query. Sotto l'elenco, solo se ce n'è qualcuna, compare la sezione delle mutazioni non concluse: per ogni UPDATE o DELETE accodato, la tabella, il suo identificativo, il comando, le parti che mancano e, se fallisce, il motivo; una modifica accodata può fallire senza che nessuno lo veda, e qui si vede. Il suo pulsante ⓧ, Annulla la mutazione, chiede conferma e invia KILL MUTATION; ciò che è già stato riscritto resta.

Oracle

Con Oracle ogni riga è una sessione utente di V$SESSION, e l’identificativo è SID,SERIAL#: il solo SID si ripete quando una sessione si chiude e se ne apre un’altra. Stato indica l’attesa in corso e, se c’è, quale sessione la blocca; SQL è l’istruzione in esecuzione o, per una sessione inattiva, l’ultima che ha inviato. La connessione di Calíope che legge l’elenco porta l’icona del portatile. Vedere l’elenco richiede un permesso su V$SESSION (SELECT_CATALOG_ROLE): senza, una barra sotto l’elenco riporta il motivo del server invece di mostrarlo vuoto, e nella Dashboard Connessioni per utente dice lo stesso. La colonna Memoria è la PGA in uso dal processo di ogni sessione (V$PROCESS.PGA_USED_MEM). Non c'è colonna di righe lette: Oracle non le conta per sessione.

MySQLMariaDBAuroraTiDB

Con la famiglia MySQL la connessione di Calíope che legge l’elenco porta l’icona del portatile e nessuna operazione in blocco la tocca. Dove il server le pubblica compaiono le colonne Memoria e Righe lette: MySQL le riempie alla fine di ogni istruzione (con lo schema sys installato), MariaDB mentre gira, e TiDB solo la memoria.

Parole chiave: processi, thread, processlist, SHOW PROCESSLIST, attivi

Terminare un processo

Termina un thread specifico del server.

Dove si trova: Lista dei processi › menu contestuale › Kill Connection / Kill Query

Apri il menu contestuale di un processo nella lista — clic destro su macOS, tocca e tieni premuto su iPad — e seleziona Kill Connection (termina l'intera connessione) o Kill Query (annulla solo la query attiva). Entrambe le azioni mostrano una conferma prima di essere eseguite.

Se il server rifiuta — quasi sempre perché il thread è di un altro utente e al tuo account manca il privilegio —, una barra sotto l'elenco lo dice: «Il thread n. … non è stato terminato:» seguito dal motivo del server. Viene annunciata e si chiude con la sua ✕. Un thread che termina davvero non dice nulla: esce semplicemente dall'elenco.

SQL Server

Con SQL Server il menu ha solo Kill Connection: KILL termina l'intera sessione e annulla la sua transazione aperta, e il client che eseguiva la query riceve la risposta del server che la sessione è in fase di terminazione. Le connessioni di Calíope stessa —quella che legge la lista, segnata questa sessione, e le altre del suo pool, segnate connessione di Calíope— non vengono mai proposte per la terminazione: interromperle interromperebbe ciò che l’app sta facendo tramite loro.

ClickHouse

Con ClickHouse il menu ha solo Kill Query: ogni riga è una query, non c'è una connessione da chiudere a parte, e la query esce dall'elenco quando finisce.

Oracle

Con Oracle, Kill Connection è ALTER SYSTEM KILL SESSION … IMMEDIATE: la sessione termina subito, la sua transazione aperta viene annullata e il suo client perde la connessione (sqlplus riporta ORA-03113). Kill Query è ALTER SYSTEM CANCEL SQL: l’istruzione riceve ORA-01013 e la sessione resta aperta. Entrambe richiedono il privilegio ALTER SYSTEM: senza, sono disattivate, e una barra sotto l’elenco lo dice. La connessione di Calíope che legge l’elenco non viene proposta per la chiusura.

Apple Vision Pro: il menu contestuale si apre guardando la riga e pizzicando senza lasciare.

Con un’etichetta di ambiente che conferma le scritture, la conferma di terminare porta il suo nome nel titolo e non chiede due volte; con una di sola lettura, i pulsanti e il menu per terminare non appaiono.

Parole chiave: kill, terminare, annullare, terminare processo, thread

Terminare thread idle o busy in blocco

Termina in massa i thread che stanno da più di N secondi in uno stato.

Dove si trova: Lista dei processi › Inattivi > / Attivi > · Termina

Accanto a Inattivi > e Attivi > nella barra degli strumenti, scrivi un numero di secondi e premi il pulsante Termina di quel campo. Inattivi chiude ogni connessione in attesa da più tempo; Attivi annulla ogni query in esecuzione da più tempo, e lascia aperta la sua connessione. Prima di agire, Calíope dice quanti thread ha trovato e chiede di confermare.

Dopo, la stessa barra sotto l'elenco lo riassume: quanti di quelli trovati sono stati terminati e, se il server ne ha rifiutato qualcuno, quanti e il motivo del primo — per esempio «Terminati 3 su 5; 2 rifiutati: …».

MySQLMariaDBAurora

I thread del server stesso — la replica e lo scheduler degli eventi — non sono mai inclusi.

PostgreSQL

I processi del server stesso — il checkpointer, lo scrittore del WAL, il launcher dell'autovacuum — compaiono nella lista, ma non sono mai inclusi.

SQL Server

Con SQL Server c'è solo Inattivi >: KILL chiude l'intera sessione, quindi una query in corso non si può annullare da sola. Le sessioni del server stesso non compaiono nemmeno nella lista, e le connessioni di Calíope stessa non vengono mai incluse.

ClickHouse

Con ClickHouse c'è solo Attivi >, che annulla con KILL QUERY ogni query che duri di più: non ci sono connessioni inattive da chiudere. Nella Dashboard, Connessioni per utente dice che non gira nulla quando non ci sono query.

Oracle

Con Oracle ci sono entrambi: Inattivi > chiude le sessioni con ALTER SYSTEM KILL SESSION e Attivi > annulla le istruzioni con ALTER SYSTEM CANCEL SQL, lasciando aperta la sessione. La connessione di Calíope che legge l’elenco non viene mai inclusa, e senza il privilegio ALTER SYSTEM entrambi i pulsanti Termina sono disattivati.

Parole chiave: idle, busy, blocco, terminazione massiva, sleep, soglia