2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
MySQL-palvelin toteuttaa useita istunnon tilan seurantalaitteita. Asiakkaat voivat ottaa nämä seurantalaitteet vastaan ilmoituksia istunnon tilan muutoksista.
Istuntotilan seurantalaitteet palvelevat seuraavia tarkoituksia:
Seurantamekanismi tarjoaa MySQL-liittimille ja asiakassovelluksille tavan määrittää, onko istuntokontekstia käytettävissä istunnon siirron mahdollistamiseksi palvelimelta toiselle. (Jotta haluat vaihtaa istuntoja kuormitettuun ympäristöön, on tarpeen havaita, onko istunnon tilaa, joka on otettava huomioon päätettäessä, onko vaihto mahdollista.)
Seurantamekanismin avulla sovellukset voivat tietää, milloin tapahtumat voidaan siirtää istunnosta toiseen. Tapahtuman tilan seuranta mahdollistaa tämän, mikä on hyödyllistä sovelluksille, jotka haluavat siirtää tapahtumat varatulta palvelimelta vähemmän kuormitetulle palvelimelle. Esimerkiksi kuormantasausliitin, joka hallitsee asiakasyhteyksien poolia, voi siirtää tapahtumia poolissa olevien istuntojen välillä.
Istunnon vaihto ei kuitenkaan voi tapahtua milloin tahansa. Jos istunto on kesken luku- tai kirjoitustapahtuman, siirtyminen toiseen istuntoon tarkoittaa, että alkuperäisen istunnon tapahtuma peruutetaan. Istunnon vaihto voi tapahtua vain, kun tapahtumassa ei ole suoritettu luku- tai kirjoitustoimintoja.
Esimerkkejä tapahtumista, jotka voivat järkevästi vaihtaa:
Tapahtuman tilan ymmärtämisen lisäksi voit myös ymmärtää tapahtuman ominaisuuksia, jotta voit käyttää samoja ominaisuuksia, kun tapahtuma siirretään eri istuntoon. Seuraavat ominaisuudet liittyvät tähän:
- READ ONLY
- READ WRITE
- ISOLATION LEVEL
- WITH CONSISTENT SNAPSHOT
Istunnonseurantatoimintojen tukemiseksi voidaan tarjota ilmoituksia seuraavan tyyppisistä asiakasistunnon tilatiedoista:
(1) Muutokset näihin asiakasistunnon tilan ominaisuuksiin:
Järjestelmämuuttuja session_track_state_change ohjaa tätä seurantaa.
(2) Vaihda oletusskeeman nimeen. Järjestelmämuuttuja session_track_schema ohjaa tätä seurantaa.
(3) Muuta järjestelmämuuttujan istuntoarvoa. Järjestelmämuuttuja session_track_system_variables ohjaa tätä seurantaa. SENSITIVE_VARIABLES_OBSERVER-käyttöoikeus tarvitaan arkaluonteisten järjestelmämuuttujien arvojen muutosten seuraamiseen.
(4) Saatavilla oleva GTID. Järjestelmämuuttuja session_track_gtids ohjaa tätä seurantaa.
(5) Tiedot tapahtuman tilasta ja ominaisuuksista. Järjestelmämuuttuja session_track_transaction_info ohjaa tätä seurantaa.
Näiden järjestelmämuuttujien avulla voidaan hallita, mitkä muutosilmoitukset tapahtuvat, mutta ne eivät tarjoa tapaa päästä ilmoitustietoihin. Ilmoitus tapahtuu MySQL-asiakas/palvelin-protokollassa, joka sisältää seurantatiedot OK-paketeissa istunnon tilan muutosten havaitsemiseksi.
MySQL C API tarjoaa pari toimintoa, jotta asiakassovellukset voivat poimia tilanmuutostietoja palvelimen palauttamista OK-paketeista:
mysqltest-ohjelmassa on disable_session_track_info- ja enable_sessionutrack_ininfo-komennot, jotka ohjaavat istunnonseurannan ilmoituksia. Voit käyttää näitä komentoja nähdäksesi SQL-käskyjen tuottamat ilmoitukset komentoriviltä. Oletetaan, että tiedosto testiskripti sisältää seuraavan mysqltest-komentosarjan:
- DROP TABLE IF EXISTS test.t1;
- CREATE TABLE test.t1 (i INT, f FLOAT);
- --enable_session_track_info
- SET @@SESSION.session_track_schema=ON;
- SET @@SESSION.session_track_system_variables='*';
- SET @@SESSION.session_track_state_change=ON;
- USE information_schema;
- SET NAMES 'utf8mb4';
- SET @@SESSION.session_track_transaction_info='CHARACTERISTICS';
- SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
- SET TRANSACTION READ WRITE;
- START TRANSACTION;
- SELECT 1;
- INSERT INTO test.t1 () VALUES();
- INSERT INTO test.t1 () VALUES(1, RAND());
- COMMIT;
Suorita komentosarja seuraavasti nähdäksesi käytössä olevien seurantaohjelmien tiedot. .
- $> mysqltest < testscript
- DROP TABLE IF EXISTS test.t1;
- CREATE TABLE test.t1 (i INT, f FLOAT);
- SET @@SESSION.session_track_schema=ON;
- SET @@SESSION.session_track_system_variables='*';
- -- Tracker : SESSION_TRACK_SYSTEM_VARIABLES
- -- session_track_system_variables
- -- *
-
- SET @@SESSION.session_track_state_change=ON;
- -- Tracker : SESSION_TRACK_SYSTEM_VARIABLES
- -- session_track_state_change
- -- ON
-
- USE information_schema;
- -- Tracker : SESSION_TRACK_SCHEMA
- -- information_schema
-
- -- Tracker : SESSION_TRACK_STATE_CHANGE
- -- 1
-
- SET NAMES 'utf8mb4';
- -- Tracker : SESSION_TRACK_SYSTEM_VARIABLES
- -- character_set_client
- -- utf8mb4
- -- character_set_connection
- -- utf8mb4
- -- character_set_results
- -- utf8mb4
-
- -- Tracker : SESSION_TRACK_STATE_CHANGE
- -- 1
-
- SET @@SESSION.session_track_transaction_info='CHARACTERISTICS';
- -- Tracker : SESSION_TRACK_SYSTEM_VARIABLES
- -- session_track_transaction_info
- -- CHARACTERISTICS
-
- -- Tracker : SESSION_TRACK_STATE_CHANGE
- -- 1
-
- -- Tracker : SESSION_TRACK_TRANSACTION_CHARACTERISTICS
- --
-
- -- Tracker : SESSION_TRACK_TRANSACTION_STATE
- -- ________
-
- SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
- -- Tracker : SESSION_TRACK_TRANSACTION_CHARACTERISTICS
- -- SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
-
- SET TRANSACTION READ WRITE;
- -- Tracker : SESSION_TRACK_TRANSACTION_CHARACTERISTICS
- -- SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; SET TRANSACTION READ WRITE;
-
- START TRANSACTION;
- -- Tracker : SESSION_TRACK_TRANSACTION_CHARACTERISTICS
- -- SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; START TRANSACTION READ WRITE;
-
- -- Tracker : SESSION_TRACK_TRANSACTION_STATE
- -- T_______
-
- SELECT 1;
- 1
- 1
- -- Tracker : SESSION_TRACK_TRANSACTION_STATE
- -- T_____S_
-
- INSERT INTO test.t1 () VALUES();
- -- Tracker : SESSION_TRACK_TRANSACTION_STATE
- -- T___W_S_
-
- INSERT INTO test.t1 () VALUES(1, RAND());
- -- Tracker : SESSION_TRACK_TRANSACTION_STATE
- -- T___WsS_
-
- COMMIT;
- -- Tracker : SESSION_TRACK_TRANSACTION_CHARACTERISTICS
- --
-
- -- Tracker : SESSION_TRACK_TRANSACTION_STATE
- -- ________
-
- ok
Suorita ennen START TRANSACTION -käskyä kaksi SET TRANSACTION -käskyä asettaaksesi eristystason ja pääsytilan ominaisuudet seuraavalle tapahtumalle. SESSION_TRACK_TRANSACTION_CHARACTERISTICS-arvo ilmaisee seuraavan asetetun tapahtumaarvon.
Tapahtuman päättävän COMMIT-käskyn jälkeen SESSION_TRACK_transaction_CHARACTERISTICS-arvo raportoidaan tyhjäksi. Tämä tarkoittaa, että seuraavat tapahtuman ominaisuudet, jotka oli asetettu ennen tapahtuman alkamista, on nollattu ja istunnon oletusarvoja sovelletaan. Seuraa näiden istunnon oletusarvojen muutoksia seuraamalla transaktion_inisolation- ja transaktion_read_only-järjestelmämuuttujien istuntoarvoja.
Jos haluat tarkastella tietoja GTID-tunnisteista, ota SESSION_TRACK_GTIDs-seuranta käyttöön järjestelmämuuttujan SESSION_TRACK_GTIDs avulla.