Мазмунга өтүү

Сабактын башталышы

Транзакциялар жана ACID

Бир нече операторду "баары же эч нерсе" принциби боюнча бир иш бирдигине бириктириңиз

Негизги идея: Транзакция - бул маалымат базасы бир, бөлүнбөс бирдик катары караган SQL операторлорунун тобу: же алардын бардыгы күчүнө кирет, же бири да кирбейт. Транзакция START TRANSACTION буйругу менен ачылат, өзгөртүүлөр киргизилет жана баарын сактоо үчүн COMMIT, же баарын жокко чыгаруу үчүн ROLLBACK буйругу менен аяктайт. Дал ушундай жол менен банк эки эсептин ортосунда акча которуп, бир тыйынды да жоготпойт же ойлоп таппайт.
Аягында сиз муну жасай аласыз:
  • START TRANSACTION, COMMIT жана ROLLBACK менен ишти ачуу, сактоо жана жокко чыгаруу,
  • банк которуусунун мисалында ACID төрт кепилдигин түшүндүрүү,
  • autocommit жалгыз операторлорду автоматтык түрдө кантип ороорун сүрөттөө,
  • оператор бузулганда же байланыш үзүлгөндө эмне сакталып каларын так болжолдоо,
  • транзакциянын бир бөлүгүн гана артка кайтаруу үчүн SAVEPOINT колдонуу.

1. Биздин мисал-схема: кичинекей банк

Бул темадагы ар бир мисал бир кичинекей accounts таблицасын колдонот. Ар бир сап - бул аты жана учурдагы балансы бар кардардын эсеби. Биз InnoDB сактоо кыймылдаткычын колдонобуз, анткени MySQL'де транзакцияларды InnoDB гана колдойт (эски MyISAM кыймылдаткычы аларды этибарга албайт). Таблицаны бир жолу түзүп, толтуруңуз:

CREATE TABLE accounts (
    account_id INT PRIMARY KEY,
    owner      VARCHAR(40) NOT NULL,
    balance    DECIMAL(10,2) NOT NULL
) ENGINE = InnoDB;

INSERT INTO accounts (account_id, owner, balance) VALUES
    (1, 'Alice', 500.00),
    (2, 'Bob',   300.00),
    (3, 'Carol', 1000.00);

Баштапкы маалыматтар мындай көрүнөт:

account_idownerbalance
1Alice500.00
2Bob300.00
3Carol1000.00

Акча үчүн биз атайын DECIMAL(10,2) алабыз: ал FLOAT'тан айырмаланып так маанилерди сактайт, ал эми FLOAT банк балансынын жанында таптакыр жагымсыз тегеректөө каталарын киргизмек.

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө