2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
MySQL सर्वरः अनेकाः सत्रस्थितिनिरीक्षकाः कार्यान्विताः भवन्ति । ग्राहकाः एतान् अनुसरणकर्तारः सत्रस्थितिपरिवर्तनस्य सूचनां प्राप्तुं सक्षमं कर्तुं शक्नुवन्ति ।
सत्रस्थितिनिरीक्षकाः निम्नलिखितप्रयोजनानां सेवां कुर्वन्ति:
ट्रैकर-तन्त्रं MySQL-संयोजकानाम् क्लायन्ट्-अनुप्रयोगानाम् च कृते एकं मार्गं प्रदाति यत् ते निर्धारयितुं शक्नुवन्ति यत् एकस्मात् सर्वरात् अन्यतमं प्रति सत्र-प्रवासस्य अनुमतिं दातुं कोऽपि सत्र-सन्दर्भः उपलब्धः अस्ति वा इति । (भार-सन्तुलित-वातावरणे सत्रं परिवर्तयितुं, स्विच सम्भवः वा इति निर्णये सत्रस्य स्थितिः अस्ति वा इति ज्ञातुं आवश्यकम् ।)
ट्रैकर-तन्त्रेण अनुप्रयोगाः ज्ञातुं शक्नुवन्ति यत् कदा व्यवहाराः एकस्मात् सत्रात् अन्यस्मिन् सत्रे स्थानान्तरयितुं शक्यन्ते । व्यवहारस्थितिनिरीक्षणम् एतत् सक्षमं करोति, यत् तेषां अनुप्रयोगानाम् उपयोगी भवति ये व्यस्तसर्वरतः न्यूनभारितसर्वरपर्यन्तं लेनदेनं स्थानान्तरयितुम् इच्छन्ति । यथा, क्लायन्ट्-सम्बद्धानां पूल्-प्रबन्धनं कुर्वन् भार-सन्तुलन-संयोजकः पूल्-मध्ये उपलब्ध-सत्रयोः मध्ये व्यवहारान् चालयितुं शक्नोति ।
परन्तु सत्रपरिवर्तनं कदापि न भवितुं शक्नोति । यदि सत्रं पठनं लेखनं वा सम्पन्नं कृतस्य व्यवहारस्य मध्ये अस्ति तर्हि भिन्नसत्रे परिवर्तनस्य अर्थः अस्ति यत् मूलसत्रे व्यवहारः पुनः रोल भवति सत्र-स्विच् तदा एव भवितुम् अर्हति यदा व्यवहारस्य अन्तः पठन-लेखन-क्रियाः न कृताः ।
यथोचितरूपेण स्विच् कर्तुं शक्नुवन्ति व्यवहारानां उदाहरणानि : १.
व्यवहारस्य स्थितिं अवगन्तुं अतिरिक्तं व्यवहारस्य लक्षणं अपि अवगन्तुं शक्नुवन्ति येन व्यवहारस्य भिन्नसत्रे स्थानान्तरणसमये समानलक्षणस्य उपयोगं कर्तुं शक्नुवन्ति एतेन निम्नलिखितलक्षणाः सम्बद्धाः सन्ति ।
- READ ONLY
- READ WRITE
- ISOLATION LEVEL
- WITH CONSISTENT SNAPSHOT
सत्रनिरीक्षणक्रियाकलापानाम् समर्थनार्थं निम्नलिखितप्रकारस्य ग्राहकसत्रस्थितिसूचनायाः सूचनाः प्रदातुं शक्यन्ते:
(1) क्लायन्ट् सत्रस्थितेः एतेषु गुणेषु परिवर्तनम् :
session_track_state_change सिस्टम् चरः एतत् ट्रैकरं नियन्त्रयति ।
(2) पूर्वनिर्धारितस्कीमानाम परिवर्तनं कुर्वन्तु। session_track_schema सिस्टम् चरः एतत् ट्रैकरं नियन्त्रयति ।
(3) सिस्टम् चरस्य सत्रमूल्यं परिवर्तयन्तु । session_track_system_variables सिस्टम् चरः एतत् ट्रैकरं नियन्त्रयति । संवेदनशीलप्रणालीचरानाम् मूल्येषु परिवर्तनं निरीक्षितुं SENSITIVE_VARIABLES_OBSERVER अनुमतिः आवश्यकी अस्ति ।
(4) उपलब्ध जीटीआईडी। session_track_gtids सिस्टम् चरः एतत् ट्रैकरं नियन्त्रयति ।
(5) व्यवहारस्य स्थितिः लक्षणं च विषये सूचना। session_track_transaction_info सिस्टम् चरः एतत् ट्रैकरं नियन्त्रयति ।
एते प्रणालीचराः कस्य परिवर्तनसूचनाः भवन्ति इति नियन्त्रणं अनुमन्यन्ते, परन्तु सूचनासूचनाः प्राप्तुं मार्गं न ददति । सूचना MySQL क्लायन्ट्/सर्वरप्रोटोकॉलस्य अन्तः भवति, यस्मिन् सत्रस्थितौ परिवर्तनं ज्ञातुं OK पैकेट् मध्ये ट्रैकरसूचना समाविष्टा भवति ।
सर्वरेण प्रत्यागतानां OK-पैकेट्-तः राज्यपरिवर्तन-सूचनाः निष्कासयितुं क्लायन्ट्-अनुप्रयोगानाम् सक्षमीकरणाय, MySQL C API एकं कार्ययुगलं प्रदाति:
mysqltest कार्यक्रमे disable_session_track_info तथा enable_sessionutrack_ininfo आदेशाः सन्ति यत् सत्रनिरीक्षकसूचनाः भवन्ति वा इति नियन्त्रयितुं शक्नुवन्ति । आदेशपङ्क्तौ SQL स्टेट्मेण्ट् द्वारा उत्पादितानि सूचनानि द्रष्टुं भवान् एतान् आदेशान् उपयोक्तुं शक्नोति । मानातु यत् सञ्चिका testscript इत्यत्र निम्नलिखितम् mysqltest स्क्रिप्ट् अस्ति ।
- 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;
सक्षम-अनुसन्धातृभिः प्रदत्तां सूचनां द्रष्टुं स्क्रिप्ट् निम्नलिखितरूपेण चालयन्तु । .
- $> 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
START TRANSACTION कथनात् पूर्वं, अग्रिमव्यवहारस्य कृते पृथक्करणस्तरं अभिगमविधलक्षणं च सेट् कर्तुं SET TRANSACTION कथनद्वयं निष्पादयन्तु SESSION_TRACK_TRANSACTION_CHARACTERISTICS मूल्यं अग्रिमव्यवहारमूल्यं सूचयति यत् सेट् कृतम् अस्ति ।
लेनदेनं समाप्तं कृत्वा COMMIT कथनस्य अनन्तरं SESSION_TRACK_transaction_CHARACTERISTICS मूल्यं रिक्तं इति प्रतिवेदितं भवति । अस्य अर्थः अस्ति यत् व्यवहारस्य आरम्भात् पूर्वं ये अग्रिमव्यवहारगुणाः सेट् कृताः आसन् ते पुनः सेट् कृताः सन्ति तथा च सत्रपूर्वनिर्धारिताः प्रयुक्ताः । एतेषु सत्रपूर्वनिर्धारितस्थानेषु परिवर्तनं निरीक्षितुं, transaction_inisolation तथा transaction_read_only प्रणालीचरानाम् सत्रमूल्यानि निरीक्षयन्तु ।
GTIDs विषये सूचनां द्रष्टुं, SESSION_TRACK_GTIDs प्रणालीचरस्य उपयोगेन SESSION_TRACK_GTIDs ट्रैकरं सक्षमं कुर्वन्तु ।