Rumah pangkalan data tutorial mysql SQL 事务与并发

SQL 事务与并发

Jun 07, 2016 pm 05:44 PM
hal ehwal serentak

a) 应用程序事务与数据库存储引擎事务 b) 应用程序处理并发与数据库存储引擎处理并发 为什么要从两个方向来考虑呢,是有原因的,首先机制处理方式,以及在软件中的所处的环境以及情节都不同。所以我们可以将事务与并发分为两个部分来讲,这文主要讲MSSQL的事

a) 应用程序事务与数据库存储引擎事务

b) 应用程序处理并发与数据库存储引擎处理并发

为什么要从两个方向来考虑呢,是有原因的,首先机制处理方式,以及在软件中的所处的环境以及情节都不同。所以我们可以将事务与并发分为两个部分来讲,这文主要讲MSSQL的事务,我会在接下来的文章谈谈java或者C#处理事务以及结合Martin Fowler说到的并发架构模式探讨。

什么是事务呢?

引言:
假设小强有两张银行卡A和B,卡A内有1000元存款。一天,小强来到银行,打算将卡A中的200元转账到卡B中。当工作人员刚打卡A中的金额减少200元时,银行突然停电了(这种情况并不多见,香港服务器,我们假设银行也没有备用电源)。那么,恢复供电后,小强查询卡A的金额,会出现怎样的情况?

答案是肯定的,还是1000元。这是因为卡B并没有增加200元。但明明工作人员已经将卡A减少了200元,为何还有1000元呢?这就是事务技术的神奇之处。

所谓事务,指的是一个单元的工作。这个单元中可能包括很多工作步骤,服务器空间,它们要么全做,要么全不做。数据库中执行的操作都是以事务为单元进行的。例如,小强将卡A的钱转到卡B,包括两个步骤:从卡A中减少200元和将卡B增加200元,这就是一个事务。如果只做了第一步,未做第二步,则第一步操作也会被撤销。

MSDN给出的定义:事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性,称为原子性、一致性、隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务。

事务执行模式

1.自动提交事务(SQL Server默认的事务执行模式)

2.显示事务(begin transaction,commit,rollback)

事务以begin transaction 开始,以commit(提交)或rollback(发生故障时,回滚)结束

例1:假设在选修表中,美国服务器,学号'1002'的学生由于某些原因不选1号课程而改选4号课程,并且该课程的考试成绩为80分。

如果我们将这两个步骤定义为一个事务的话,代码如下:

begin transaction update 选修 学号=and 课程号= go update 选修 and 课程号= commit select * from 选修

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimanakah concurrency dan multithreading fungsi Java boleh meningkatkan prestasi? Bagaimanakah concurrency dan multithreading fungsi Java boleh meningkatkan prestasi? Apr 26, 2024 pm 04:15 PM

Teknik concurrency dan multithreading menggunakan fungsi Java boleh meningkatkan prestasi aplikasi, termasuk langkah berikut: Memahami konsep concurrency dan multithreading. Manfaatkan pustaka konkurensi dan berbilang benang Java seperti ExecutorService dan Callable. Amalkan kes seperti pendaraban matriks berbilang benang untuk memendekkan masa pelaksanaan. Nikmati kelebihan peningkatan kelajuan tindak balas aplikasi dan kecekapan pemprosesan yang dioptimumkan yang dibawa oleh concurrency dan multi-threading.

Aplikasi konkurensi dan coroutine dalam reka bentuk API Golang Aplikasi konkurensi dan coroutine dalam reka bentuk API Golang May 07, 2024 pm 06:51 PM

Concurrency dan coroutine digunakan dalam reka bentuk GoAPI untuk: Pemprosesan berprestasi tinggi: Memproses berbilang permintaan serentak untuk meningkatkan prestasi. Pemprosesan tak segerak: Gunakan coroutine untuk memproses tugas (seperti menghantar e-mel) secara tidak segerak, melepaskan utas utama. Pemprosesan strim: Gunakan coroutine untuk memproses strim data dengan cekap (seperti bacaan pangkalan data).

Bagaimanakah sambungan pangkalan data Java mengendalikan transaksi dan konkurensi? Bagaimanakah sambungan pangkalan data Java mengendalikan transaksi dan konkurensi? Apr 16, 2024 am 11:42 AM

Transaksi memastikan integriti data pangkalan data, termasuk atomicity, konsistensi, pengasingan dan ketahanan. JDBC menggunakan antara muka Sambungan untuk menyediakan kawalan transaksi (setAutoCommit, commit, rollback). Mekanisme kawalan konkurensi menyelaraskan operasi serentak, menggunakan kunci atau kawalan konkurensi optimis/pesimis untuk mencapai pengasingan transaksi untuk mengelakkan ketidakkonsistenan data.

Panduan untuk menguji unit fungsi serentak Go Panduan untuk menguji unit fungsi serentak Go May 03, 2024 am 10:54 AM

Unit menguji fungsi serentak adalah penting kerana ini membantu memastikan kelakuan mereka yang betul dalam persekitaran serentak. Prinsip asas seperti pengecualian bersama, penyegerakan dan pengasingan mesti dipertimbangkan semasa menguji fungsi serentak. Fungsi serentak boleh diuji unit dengan mensimulasikan, menguji keadaan perlumbaan dan mengesahkan keputusan.

Bagaimana untuk menggunakan kelas atom dalam fungsi Java concurrency dan multi-threading? Bagaimana untuk menggunakan kelas atom dalam fungsi Java concurrency dan multi-threading? Apr 28, 2024 pm 04:12 PM

Kelas atom ialah kelas selamat benang di Java yang menyediakan operasi tanpa gangguan dan penting untuk memastikan integriti data dalam persekitaran serentak. Java menyediakan kelas atom berikut: AtomicIntegerAtomicLongAtomicReferenceAtomicBoolean Kelas ini menyediakan kaedah untuk mendapatkan, menetapkan dan membandingkan nilai untuk memastikan bahawa operasi adalah atom dan tidak akan diganggu oleh benang. Kelas atom berguna apabila bekerja dengan data kongsi dan mencegah rasuah data, seperti mengekalkan akses serentak ke kaunter kongsi.

Bagaimana untuk mengelakkan kebuntuan dengan concurrency dan multi-threading dalam fungsi Java? Bagaimana untuk mengelakkan kebuntuan dengan concurrency dan multi-threading dalam fungsi Java? Apr 26, 2024 pm 06:09 PM

Masalah kebuntuan dalam persekitaran berbilang benang boleh dicegah dengan menentukan susunan kunci tetap dan memperoleh kunci secara berurutan. Tetapkan mekanisme tamat masa untuk berhenti menunggu apabila kunci tidak dapat diperoleh dalam masa yang ditentukan. Gunakan algoritma pengesanan kebuntuan untuk mengesan status kebuntuan benang dan ambil langkah pemulihan. Dalam kes praktikal, sistem pengurusan sumber mentakrifkan urutan kunci global untuk semua sumber dan memaksa benang memperoleh kunci yang diperlukan untuk mengelakkan kebuntuan.

Penjadualan proses Golang: Mengoptimumkan kecekapan pelaksanaan serentak Penjadualan proses Golang: Mengoptimumkan kecekapan pelaksanaan serentak Apr 03, 2024 pm 03:03 PM

Penjadualan proses Go menggunakan kaedah pengoptimuman koperasi termasuk: menggunakan coroutine ringan sebanyak mungkin untuk memperuntukkan coroutine secara munasabah untuk mengelakkan operasi menyekat dan menggunakan kunci dan primitif penyegerakan.

Cara Golang berfungsi dengan cekap mengendalikan tugas selari Cara Golang berfungsi dengan cekap mengendalikan tugas selari Apr 19, 2024 am 10:36 AM

Pengendalian tugas selari yang cekap dalam fungsi Go: Gunakan kata kunci go untuk melancarkan rutin serentak. Gunakan sync.WaitGroup untuk mengira bilangan rutin yang belum selesai. Apabila rutin selesai, wg.Done() dipanggil untuk mengurangkan kaunter. Program utama menyekat menggunakan wg.Wait() sehingga semua rutin selesai. Kes praktikal: Hantar permintaan web secara serentak dan kumpulkan respons.

See all articles