Middle
241
JDBCде кайсы транзакция изоляция деңгээлдери колдоо көрсөтүлөт?
AIден жооп
sobes.tech AI
JDBC-де төмөнкү транзакциялардын бөлүнүү деңгээлдери колдоого алынат:
TRANSACTION_NONE: Байланыш транзакцияларды колдобойт.TRANSACTION_READ_UNCOMMITTED: Транзакция башка транзакциялардан бекитилбеген маалыматтарды окууга уруксат берет (кырсык окуу).TRANSACTION_READ_COMMITTED: Транзакция башка транзакциялар тарабынан бекитилген маалыматтарды гана көрөт. Кырсык окуу чыгарылган, бирок кайталанбаган окуулар мүмкүн.TRANSACTION_REPEATABLE_READ: Транзакция кайталанган окууларда ошол эле маалыматтарды көрөт, эгер ал ошол транзакция тарабынан өзгөртүлбөсө. Кырсык окуу жана кайталанбаган окууларды чыгарат, бирок фантомдор мүмкүн.TRANSACTION_SERIALIZABLE: Эң жогорку бөлүнүү деңгээли. Транзакциялар секвенциалдуу түрдө аткарылат, алардын бири-бирине тоскоолдук кылбайт. Кырсык окуу, кайталанбаган окуулар жана фантомдор чыгарыла тургандай кылып иштейт. Максималдуу туруктуулукту камсыздайт, бирок иштөө ылдамдыгын төмөндөтүшү мүмкүн.
Бөлүнүү деңгээли Connection.setTransactionIsolation(int level) методу аркылуу орнотулушу мүмкүн. Мисал:
// Repeatable Read деңгээлин орнотуу
connection.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
Өгүмдүн алдын ала орнотулган мааниси конкреттүү маалыматтар базасынын башкаруу системине көзкаранды.
Учурдагы бөлүнүү деңгээлин алуу үчүн Connection.getTransactionIsolation() методу колдонулат:
int isolationLevel = connection.getTransactionIsolation();
// Учурдагы деңгээлин текшерүү
if (isolationLevel == Connection.TRANSACTION_READ_COMMITTED) {
System.out.println("Учурдагы бөлүнүү деңгээли - READ_COMMITTED");
}
Маалыматтардын туруктуулугун жана колдонмонун иштөө ылдамдыгын тең салмакта кармоо үчүн бөлүнүү деңгээлин сактык менен тандап алуу маанилүү.