Görüşmede çürümüş olan MySQL'in dört izolasyon seviyesi, okuduktan sonra görüşmeciyi asın!

İşlem nedir

İşlem, bir uygulamadaki bir dizi zorlu işlemdir. Tüm işlemler başarıyla tamamlanmalıdır, aksi takdirde her işlemde yapılan tüm değişiklikler geri alınacaktır. Yani, işlem atomiktir ve bir işlemdeki bir dizi işlem ya tamamen başarılıdır ya da hiçbiri gerçekleştirilmez.

İki tür işlem sonu vardır: İşlemdeki tüm adımlar başarılı bir şekilde yürütüldüğünde, işlem tamamlanır. Adımlardan biri başarısız olursa, bir geri alma işlemi gerçekleşir ve geri alma işleminin öncesinden işlemin başlangıcına kadar tüm işlemler geri alınır. Ayrıca bu dağıtılmış işlemi anlamıyor musunuz? Bir kez açıkça söyleyin! Herkese okumasını önerin.

İşlemin ACID'si

İşlemlerin dört özelliği vardır: Atomiklik, Tutarlılık, İzolasyon ve Dayanıklılık. Bu dört özellik kısaca ACID özellikleri olarak adlandırılır.

  • Atomiklik. İşlem, veritabanının mantıksal çalışma birimidir. İşlemin içerdiği tüm işlemler yapılır veya yapılmaz
  • tutarlılık. İşlem yürütmenin sonucu, veritabanını bir tutarlılık durumundan başka bir tutarlılık durumuna değiştirmek olmalıdır. Bu nedenle, veritabanı yalnızca başarılı işlem gönderiminin sonuçlarını içerdiğinde, veritabanının tutarlı bir durumda olduğu söylenir. Veri tabanı sisteminin çalışmasında bir arıza meydana gelirse, bazı işlemler tamamlanmadan kesintiye uğramaya zorlanır.Bu tamamlanmamış işlemlerle veri tabanında yapılan değişikliklerin bir kısmı fiziksel veri tabanına yazılmıştır.Şu anda veri tabanı yanlış durumda veya Tutarsız durum.
  • İzolasyon. Bir işlemin yürütülmesi diğer işlemlere müdahale edemez. Yani, bir işlem tarafından kullanılan dahili işlemler ve veriler, diğer eşzamanlı işlemlerden izole edilmiştir ve eşzamanlı olarak gerçekleştirilen her işlem birbirini engelleyemez.
  • Kalici. Kalıcı olarak da bilinir, bir işlem yapıldığında, veritabanındaki verilerde yapılan değişikliklerin kalıcı olması gerektiği anlamına gelir. Aşağıdaki diğer işlemler veya arızaların, uygulamanın sonuçları üzerinde herhangi bir etkisi olmamalıdır.

Mysql'in dört izolasyon seviyesi

SQL standardı, işlemin içindeki ve dışındaki değişikliklerin görünür ve görünmez olduğunu sınırlamak için bazı özel kurallar dahil olmak üzere 4 tür yalıtım düzeyi tanımlar. Düşük seviyeli izolasyon seviyeleri genellikle daha yüksek eşzamanlı işlemeyi destekler ve daha düşük sistem ek yüküne sahiptir. Ayrıca bu dağıtılmış işlemi anlamıyor musunuz? Bir kez açıkça söyleyin! Herkese okumasını önerin.

Taahhüt Edilmedi'yi okuyun (taahhüt edilmeyen içeriği okuyun)

Bu izolasyon seviyesinde, tüm işlemler diğer taahhüt edilmemiş işlemlerin yürütme sonuçlarını görebilir. Bu izolasyon seviyesi pratik uygulamalarda nadiren kullanılır, çünkü performansı diğer seviyelerden çok daha iyi değildir. Taahhüt edilmeyen verileri okumak, Kirli Okuma olarak da bilinir.

Taahhüdü Oku (gönderilen içeriği okuyun)

Bu, çoğu veritabanı sistemi için varsayılan yalıtım düzeyidir (ancak MySQL varsayılanı değildir). İzolasyonun basit tanımını karşılar: bir işlem, yalnızca taahhüt edilen işlem tarafından yapılan değişiklikleri görebilir. Bu izolasyon seviyesi aynı zamanda tekrarlanamayan okumayı (Tekrarlanamaz Okuma) da destekler, çünkü aynı işlemin diğer örnekleri bu örneğin işlenmesi sırasında yeni işlemlere sahip olabilir, bu nedenle aynı seçim farklı sonuçlar döndürebilir.

Tekrarlanabilir Okuma

Bu, MySQL'in varsayılan işlem izolasyon seviyesidir ve aynı işlemin birden çok örneğinin aynı anda veri okurken aynı veri satırlarını görmesini sağlar. Ancak teoride, bu başka bir aldatıcı soruna yol açar: Phantom Read. Basitçe ifade etmek gerekirse, hayali okuma, kullanıcı bir dizi veri satırını okuduğunda, başka bir işlemin aralığa yeni bir satır eklediği anlamına gelir. Kullanıcı, aralıktaki veri satırlarını tekrar okuduğunda, yeni bulacağı anlamına gelir " Phantom "hattı. InnoDB ve Falcon depolama motorları, bu sorunu Multiversion Concurrency Control (MVCC) mekanizması aracılığıyla çözer.

Serileştirilebilir (Serileştirilebilir)

Bu en yüksek izolasyon seviyesidir ve işlem sırasını birbiriyle çatışmayı imkansız hale getirmeye zorlayarak hayali okuma problemini çözer. Kısacası, okunan her veri satırına paylaşılan bir kilit ekler. Bu düzeyde, çok fazla zaman aşımına ve kilit çekişmesine yol açabilir.

Bu dört izolasyon seviyesi farklı kilit türleri ile uygulanmaktadır.Aynı veriler okunursa problemler ortaya çıkma eğilimindedir. Örneğin:

  • Kirli Okuma: Bir işlem, verilerin bir kopyasını güncelledi ve başka bir işlem şu anda aynı veri kopyasını okudu. Bazı nedenlerden dolayı, önceki RollBack işlemi gerçekleştirilir ve sonraki işlem tarafından okunan veriler Yanlış olur.
  • Tekrarlanamaz okuma: Veriler, bir işlemin iki sorgusunda tutarsızdır Bu, iki sorgu arasına eklenen bir işlemle güncellenen orijinal veriler olabilir.
  • Sahte Okuma: Bir işlemin iki sorgusundaki veri öğelerinin sayısı tutarsızdır.Örneğin, bir işlem birkaç veri satırını sorgularken, başka bir işlem bu anda yeni veri sütunları ekler. Bir sonraki sorguda, sorgulanmayan birkaç veri sütunu var Bu anda veri eklerseniz ve başka bir işlem eki girerseniz, bir hata bildirilecektir.

MySQL'de, aşağıdaki gibi sorunlara neden olabilecek bu dört izolasyon seviyesi uygulanır:

Mysql'in izolasyon seviyesini test edin

Daha sonra, sırasıyla bu izolasyon seviyelerini test etmek için MySQL istemci programını kullanacağız.

Test veritabanı demodur ve tablo testtir; tablo yapısı:

İki komut satırı istemcisi sırasıyla A ve B'dir; A'nın izolasyon seviyesi sürekli değiştirilir ve veriler B tarafında değiştirilir.

Taahhüt edilmeyenleri okumak için A izolasyon seviyesini ayarlayın (taahhüt edilmeyenleri okuyun)

C: İşlemi başlatın, veriler şu andaki başlangıç durumudur

B: İşlemi başlatın, verileri güncelleyin, ancak göndermeyin

C: Verileri tekrar okuyun ve verilerin değiştirilmiş olduğunu bulun. Bu sözde "kirli okuma" dır.

B: İşlemi geri alın

A: Verileri tekrar okuyun ve verilerin başlangıç durumuna geri döndüğünü bulun

Yukarıdaki deneyden sonra, B işleminin bir kaydı güncellediği, ancak göndermediği sonucuna varılabilir.Şu anda, A işlemi, taahhüt edilmemiş kaydı sorgulayabilir. Kirli okuma fenomenine neden olur. Gerçekleştirilmemiş okuma, en düşük izolasyon seviyesidir.

A istemcisinin işlem izolasyon düzeyini kaydedilmiş (okuma kaydedildi) olarak ayarlayın

C: İşlemi başlatın, veriler şu andaki başlangıç durumudur

B: İşlemi başlatın, verileri güncelleyin, ancak göndermeyin

C: Verileri tekrar okuyun ve verilerin değiştirilmediğini bulun

B: İşlemi tamamla

C: Verileri tekrar okuyun ve verilerin değiştiğini bulun, B tarafından sunulan değişikliğin işlemde A tarafından okunduğunu gösterir. Bu sözde "tekrar edilemez okuma" dır.

Yukarıdaki deneyden sonra, sunulan okuma izolasyon seviyesinin kirli okumalar sorununu çözdüğü sonucuna varılabilir, ancak tekrarlanamayan okumalar sorunu ortaya çıkar, yani iki sorguda A işleminin verileri tutarsızdır, çünkü iki sorgu arasındaki B işlemi Bir veri parçası güncellendi. Okundu bilgisi yalnızca gönderilen kayıtları okumasına izin verilir, ancak tekrar tekrar okumak zorunda değildir.

A'nın izolasyon seviyesini tekrarlanabilir okunabilir (tekrarlanabilir okuma) olarak ayarlayın

C: İşlemi başlatın, veriler şu andaki başlangıç durumudur

B: İşlemi başlatın, verileri güncelleyin, ancak göndermeyin

C: Verileri tekrar okuyun ve verilerin değiştirilmediğini bulun

B: İşlemi tamamla

C: Verileri tekrar okuyun ve verilerin hala değişmediğini görün, bu da bu sefer tekrar okuyabileceğiniz anlamına gelir

B: Yeni bir veri parçası ekleyin ve gönderin

C: Verileri tekrar okuyun ve verilerin değişmediğini bulun. Tekrar tekrar okunabilmesine rağmen, verilerin en son veriler olmadığı görülmüştür. Bu sözde "hayali okuma" dır.

C: Bu işlemi gönderin, verileri tekrar okuyun ve okumanın normal olduğunu bulun

Yukarıdaki deneylerden, tekrarlanabilir okuma izolasyon seviyesinin yalnızca taahhüt edilen kayıtların okunmasına izin verdiği ve bir işlemde bir kaydın iki kez okunduğu dönemde diğer işlem departmanlarının kaydı güncellediği sonucuna varılabilir. Ancak işlem, diğer işlemlerle serileştirmeyi gerektirmez. Örneğin, bir işlem, taahhüt edilmiş bir işlem tarafından güncellenen bir kayıt bulabildiğinde, ancak hayali bir okuma problemine sahip olduğunda (bunun mümkün olduğunu unutmayın, çünkü izolasyon seviyesinin veritabanı uygulaması farklıdır). Yukarıdaki deneyde olduğu gibi, veri fantom okuma problemi yoktur.

A'nın yalıtım düzeyini Serileştirilebilir (Serileştirilebilir) olarak ayarlayın

C: İşlemi başlatın, veriler şu andaki başlangıç durumudur

B: B'nin şu anda bekleme durumuna girdiği bulundu, çünkü A'nın işlemi henüz tamamlanmadı ve yalnızca bekleyebilir (şu anda B'nin bekleme zaman aşımı olabilir)

A: İşlemi gerçekleştirin

B: Eklemenin başarılı olduğu bulundu

Serileştirilebilir alanı tamamen kilitler.Bir işlem aynı verileri sorguluyorsa, önceki işlem tamamlanana ve kilidi açılana kadar beklemesi gerekir. Tam bir izolasyon seviyesidir ve ilgili veri tablosu kilitlenecektir, bu nedenle verimlilik sorunları olacaktır.

Tasarladığınız arayüz yeterince zarif mi?
önceki
Posta dağıtım hizmeti spring-boot-mail
Sonraki
SpringBoot2.x mikro hizmetler platformu mikro hizmetleri platformuna dayalı
Gösteri operasyonu yine burada ve 500 yuan süpürge Anneler Günü için sürpriz bir set! Netizen: "Annem yine bana vurdu!"
Bugün, her çalışkan el çiftine!
Maotai bir günde 85 milyar kaybetti! Daha çok büyük hissedar, borsada işlem gören şirketlerin menfaatlerini ihlal ettiklerinden şikayet edildi.
Sıcak hava balonuna tırmanın ve açelyaların denizine bakın. Bulutların üzerinde uçmayı deneyimlemek için cam köprüye adım atın - Danzhai Wanda Kasabasındaki "1 Mayıs" açelya festivali benzeri görülme
EMSITE Framework, tam otomatik ve hızlı geliştirme çerçevesi dağıtılmış bir arka plandır
2018'de Çin'in lojistik sektörü segmentasyon pazarının statüko ve gelişme beklentilerinin analizi Hızlı gelişimi ve gelecekteki gelişim için yeterli ivmeyi sürdürmek
Sephora, Şangay'da bir mağaza daha açtı, bu yıl Çin'de 250 mağaza hedefine ulaşacak
Weng Fan ve 54 yaşındaki Yang Zhenning, 15 yıldır evliler ve bunun arkasındaki sebepler takdire şayan.
ES tam metin arama motoru pring-boot-elasticsearch
Çin (Changsha) Uluslararası İnşaat Makineleri Fuarı'na büyük paletli vinçler giriyor
Hanfu "Refah": arz yetersizliğinde talep yükseliyor, ancak brüt kar marjı markalı modadan çok daha düşük
To Top