Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Oracle'da Transaction Yönetimi

1,277 views

Published on

Oracle'da Transaction Yönetimi

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Oracle'da Transaction Yönetimi

  1. 1. Oracle’da Transaction Yönetimi Emrah METE TURKCELL TEKNOLOJİ TROUG Database Developement SIG Etkinliği 5 Temmuz 2012
  2. 2. http://emrahmete.wordpress.com/about/ Marmara Üniversitesi - Bilgisayar Teknolojisi ve Programlama Yıldız Teknik Üniversitesi - Bilgisayar Mühendisliği Turkcell Teknoloji - Yazılım Geliştirme Mühendisi emrahmete.wordpress.com TROUG - Yönetim Kurulu Üyeliği Emrah METE Yahoo OracleTurk Grubu Moderatör
  3. 3. Ajanda • Transaction Kavramı • Transaction Özellikleri • Transaction Control • Concurrency ve Consistency • Redo ve Undo Üretimi • Transaction Locks • Autonomous Transaction
  4. 4. Transactions (ACID) • Atomicity: Transaction’lar atomiktir, parçalanamazlar. Ya tamamı çalışır yada hiç çalışmaz. • Consistency: Transaction’lar database’i tutarlı bir durumdan diğer bir tutarlı duruma taşır. • Isolation: Transaction commit ile sonlanana kadar yapılan değişiklikler diğer sessionlarda görünmez. • Durability: Transaction commit ile sonlanmış ise artık yapılan tüm değişiklikler kalıcı hale gelmiştir.
  5. 5. Transactions
  6. 6. Begining Of a Transaction • Assigns UNDO DATA Segment • Allocating UNDO SEGMENT and UNDO Segment Table Slot • Generating Transaction ID (XID) XIDUSN Segment number XIDSLOT Slot number XIDSQN Sequence number Example:0002.028.000004DA • SELECT XID FROM v$transaction
  7. 7. Transaction Control Statements End Of Transactions • COMMIT • ROLLBACK • ROLLBACK TO SAVEPOINT • SET TRANSACTION
  8. 8. Autonomous Transactions
  9. 9. Distributed Transactions Two Phase COMMIT İstemci Uzaktaki sunucu 2 Uzaktaki sunucu 1 Ana Oracle Veritabanı COMMIT; ? ? Onay Onay Dağıtık işlem başarı ile tamamlandı. Transaction’ı başlatan node hata alsaydı?
  10. 10. Concurrency and Locks • Oracle, birden çok user’ın eş zamanlı olarak veri erişimini kilitler kullanarak yönetir. • DML cümleleri row level kilit kullanırken, DDL kilitleri şema nesnelerini kilitleyebilir. • Yazma yönünde eriştiğimiz bilgi satır seviyesinde kilit alır ve başka bir user o kilit serbest bırakılana kadar kilitli satıra yazma erişimi sağlayamaz. • Kilit sayısı arttıkça concurrency düşer. Bu bağlamda transaction yönetimi oldukça önemlidir. • Oracle otomatik olarak kilit seviyesini en düşük seviyede tutar. • Oracle lock eskalasyonu hiç bir zaman yapmaz. Çünkü lock eskalasyonu olası deadlock problemlerine sebiyet verebilir. • Oracle concurrency seviyesini arttırmak için kilit dönüştürme işlemini gerçekleştirebilir.
  11. 11. REDO and UNDO Log Buffer Undo Block UPDATE score SET runs = 75 WHERE team = 'AUS'; Data Block Undo Header UPDATE score SET wickets = 7 WHERE team = 'AUS'; UPDATE score SET runs = 77, wickets = 8 WHERE team = 'AUS'; block 42 slot 0 col0: ENG col1: 841 col2: 3 block 42 slot 1 col0: AUS col1: 74 col2: 6 slot 22: 10 COMMIT;slot 22: 105.2 slot 22: 10 block 42 slot 1 col1: 74 5.1 block 42 slot 1 col1: 74 5.1 block 42 slot 1 col1: 74 5.1 block 42 slot 1 col1: 75 11.5 col1: 75 col1: 75 block 42 slot 1 col2: 6 5.1 block 42 slot 1 col2: 6 5.1 block 42 slot 1 col2: 6 5.1 block 42 slot 1 col2: 7 11.5 col2: 7 col2: 7 block 42 slot 2 col2: 75 col3: 7 block 42 slot 1 col1: 75 col2: 7 5.1 block 42 slot 2 col2: 75 col3: 7 block 42 slot 1 col1: 75 col2: 7 5.1 block 42 slot 2 col2: 75 col3: 7 block 42 slot 1 col1: 75 col2: 7 5.1 block 42 slot 1 col1: 77 col2: 8 11.5 col1: 77 col2: 8 col1: 77 col2: 8 slot 22: 95.4 slot 22: 9 slot 22: 9
  12. 12. ROLLBACK Undo Block Data Block Undo Header UPDATE score SET wickets = 9 WHERE team = 'AUS'; UPDATE score SET wickets = 10 WHERE team = 'AUS'; block 42 slot 0 col0: ENG col1: 841 col2: 3 block 42 slot 1 col0: AUS col1: 77 col2: 8 slot 22: 10 ROLLBACK;slot 22: 105.2 slot 22: 10 block 42 slot 1 col2: 8 5.1 block 42 slot 1 col2: 9 11.5 col2: 9 block 42 slot 1 col2: 9 5.1 block 42 slot 1 col2: 10 11.5 slot 22: 95.4 slot 22: 105.6 slot 22: 105.11 block 42 slot 1 col2: 9 11.5 block 42 slot 1 col2: 8 11.5 block 42 slot 1 col2: 8 5.1 col2: 9 block 42 slot 1 col2: 9 5.1 block 42 slot 2 col3: 8 5.1 block 42 slot 2 col3: 8 5.1 block 42 slot 2 col3: 9 5.1 block 42 slot 2 col3: 9 5.1 col2: 10 col2: 10 col2: 9 col2: 9 slot 22: 10 slot 22: 10 col2: 8 col2: 8 slot 22: 10 slot 22: 10 slot 22: 9 slot 22: 9 Log Buffer
  13. 13. Online Redo And Archived Redo 1a 2a 3a 1b 2b 3b ARCH X:/ Y:/ Z:/ LGWR LGWR LGWR ARC ARC ARC Log Buffer LGWR
  14. 14. How can I measure produced Redo Size? • Bir tabloya INSERT – UPDATE – DELETE işlemleri gönderek COMMIT veya ROLLBACK çalıştırmadan REDO üretimini bu basit görüntü yardımı ile ölçebiliriz. • CREATE OR REPLACE VIEW redo_size AS SELECT value FROM v$mystat ms, v$statname sn WHERE ms.statistic# = sn.statistic# AND sn.name = 'redo size';
  15. 15. Redo Üretimi Azaltılabilir mi? Oracle veritabanında TEMPORARY TABLE seçeneğini kullanarak REDO üretimini kısıtlayabilirsiniz, UNDO üretimi ROLLBACK edebilmek için yine yaratılacaktır. * Oracle veritabanında sadece bazı özel işlemler NOLOGGING seçeneği ile yapılabilinir. * Index creations and ALTERs (rebuilds) Bulk INSERTs using a ‘direct path insert’ via the /*+APPEND */ hint LOB operation (updates to large objects do not have to be logged Table creations via the CREATE TABLE AS SELECT Various ALTER TABLE operations such as MOVE and partition SPLIT TRUNCATE (but it does not need a NOLOGGING clause, as it is always in NOLOGGING mode)
  16. 16. COMMIT • Generating System Change Number(SCN) • All changes in the transactions permanent • Erases all savepoints and Relaeses All Locks • LGWR process writes remaining REDO into Redo Log Buffer to Online Redo Log and Writes SCN Online Redo Log • Optimistic Approach/Low Cost # of rows inserted Time to INSERT (secs) Time to COMMIT (secs) Redo Generated (bytes) 1 .01 .00 496 10 .01 .00 4476 100 .01 .00 26664 1000 .03 .00 266628 100000 3.35 .00 26520524
  17. 17. ROLLBACK • Undoes all changes from transaction Undo segments • Release All Locks held by transaction • Erase All Savepoints • Optimistic Approach/High Cost # of rows inserted Time to INSERT (secs) Time to ROLLBACK (secs) Redo Generated (bytes) 9 .06 .02 1,648 99 .04 .00 12,728 999 .04 .01 122,852 9,999 .94 .08 1,170,112 99,999 8.08 4.81 11,842,168
  18. 18. Recommendation • Bitmap Index Kullanımı? • Redo Üretimini Azaltmak? • Prosedür/Fonksyon Yazarken nasıl davranmalıyız? • JDBC(AutoCommit)
  19. 19. Kaynaklar • «Expert, Oracle Database Architecture 11g,10g,9i» Tom KYTE (2010) • tahiti.oracle.com • Oracle 10g Release 2 New Features Guide • Oracle 10 Release 2 Concept Guide • http://tonguc.wordpress.com/ • http://www.juliandyke.com/
  20. 20. Sorular?/Yorumlar Emrah METE Turkcell Teknoloji emrahmete@gmail.com emrahmete@wordpress.com
  21. 21. Teşekkürler Emrah METE Turkcell Teknoloji emrahmete@gmail.com emrahmete@wordpress.com

×