cari

1.数据库是如何加锁的,简单的sql语句
SELECT username,passwd FROM g_test LIMIT 1 FOR UPDATE
正常的查询后加上FOR UPDATE 就是给数据库加锁了么?
2.加上FOR UPDATE是对写加锁,这个语句是否对DELETE生效?
3.MYISAM加锁是全表锁?
4.InnoDB是行锁?

新加问题

5.如果数据库开启了事务并加了锁,由于某些原因后续操作未进行彻底,没有commit或rollback,事务是否有超时机制?锁是否有超时机制?到期自动销毁

回复内容:

1.数据库是如何加锁的,简单的sql语句
SELECT username,passwd FROM g_test LIMIT 1 FOR UPDATE
正常的查询后加上FOR UPDATE 就是给数据库加锁了么?
2.加上FOR UPDATE是对写加锁,这个语句是否对DELETE生效?
3.MYISAM加锁是全表锁?
4.InnoDB是行锁?

新加问题

5.如果数据库开启了事务并加了锁,由于某些原因后续操作未进行彻底,没有commit或rollback,事务是否有超时机制?锁是否有超时机制?到期自动销毁

其他答主说的不够全面,我帮你整理一下吧。
首先我认为在谈到数据库各种机制前(尤其是MySQL这种插件式plugin存储引擎的数据库),你一定要声明你使用的存储引擎,不然问题无意义,此处我假定你的第1、2条问题是基于innoDB存储引擎下的,并且我的理论也是基于innoDB引擎。
明确概念,锁分为两种:
读锁->共享锁 (S)
写锁 -> 排它锁 (X)
写操作的为排它锁,读操作的为排它锁,
理论上来说只要被操作对象(例如 id =1这行)出现排它锁,那么除了该事务可以操作这行,其余事务全部无权对这行进行任何操作,无论是读操作还是写操作

对了,selct .. for update并不属于SQL规范,所以实际上应该避免使用。
select ..for update 是进行排它锁操作的,但是这条语句在事务中才有意义,因为在非事务情况下使用,一下子就完成了锁定与解锁的操作,无任何实际意义。
还有一点很重要的是innoDB在隔离级别为REPEATABLE READ和READ COMMITTED的事务操作中,并没有直接使用行级锁,而是使用了乐观机制MVCC,即大多数的读操作都不用加锁,即使是写锁也只是锁必要的行《了解MVCC》

回到你的问题:
1、“SELECT username,passwd FROM g_test LIMIT 1 FOR UPDATE” 是否加锁了?

是的,加了一个行级排它锁。

2、“for update写加锁是否对delete语句有效?”

加上for update是一个写锁(即排它锁),它对delete当然有效(delete无法操作),但还是上面的观点,在REPEATABLE READ和READ COMMITTED的事务操作中,使用了MVCC,所以你可以惊奇的发现即使用了for update这条排它锁语句后,其他事务依旧可以进行读操作。

3、“MyISAM加锁是全表锁吗?”

对的,MyISAM存储引擎只有表级锁(table-level locking)

4、“innoDB是行级锁?”

不全对,innoDB具有行级锁和表级锁,但它默认是行级锁。

5、“事务和锁是否有超时机制”

事务本身是没有超时机制的,但是如果事务是由于锁表而造成的超时原因,是会进行回滚操作。innodb默认锁超时时间为50秒,通过设置变量innodb_lock_wait_timeout来实现。

MYISAM加锁是对整张表的;InnoDB加锁是行锁,针对一行记录
SELECT username,passwd FROM g_test LIMIT 1 FOR UPDATE就是防止多个进程过来同时执行sql查询,加上FOR UPDATE的话,会被锁定,这样另一个进程过来就会排队等待,直到上一个进程执行完毕;也就是并发
最重要的一点是,加锁,要放到事务中去,即执行sql执行先开启事务。

InnoDB 采用的是两阶段锁定协议(two-phase locking protocol)。在事务执行过程中,随时都可执行锁定。锁只有在执行 commit 或 rollback 时才会释放,并且所有的锁是在同一时刻被释放。InnoDB会根据隔离级别在需要时自动加锁。此为隐式锁定;
InnoDB 也支持通过特定语句进行显式锁定:
select ... lock in share mode (shared lock)
select ... for update (exclusive lock)
另外 MySQL在服务器层也支持lock tables 和 unlock tables 语句,这和存储引擎无关。

Kenyataan
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
PHP dalam Tindakan: Contoh dan aplikasi dunia nyataPHP dalam Tindakan: Contoh dan aplikasi dunia nyataApr 14, 2025 am 12:19 AM

PHP digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan pembangunan API. 1) e-dagang: Digunakan untuk fungsi keranjang belanja dan pemprosesan pembayaran. 2) Sistem Pengurusan Kandungan: Digunakan untuk penjanaan kandungan dinamik dan pengurusan pengguna. 3) Pembangunan API: Digunakan untuk Pembangunan API RESTful dan Keselamatan API. Melalui pengoptimuman prestasi dan amalan terbaik, kecekapan dan pemeliharaan aplikasi PHP bertambah baik.

PHP: Membuat kandungan web interaktif dengan mudahPHP: Membuat kandungan web interaktif dengan mudahApr 14, 2025 am 12:15 AM

PHP menjadikannya mudah untuk membuat kandungan web interaktif. 1) Secara dinamik menjana kandungan dengan memasukkan HTML dan paparkannya dalam masa nyata berdasarkan input pengguna atau data pangkalan data. 2) Penyerahan borang proses dan menjana output dinamik untuk memastikan bahawa htmlspecialchars digunakan untuk mencegah XSS. 3) Gunakan MySQL untuk membuat sistem pendaftaran pengguna, dan gunakan kata laluan dan preprocessing untuk meningkatkan keselamatan. Menguasai teknik ini akan meningkatkan kecekapan pembangunan web.

PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popularPHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popularApr 14, 2025 am 12:13 AM

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

Relevannya PHP: Adakah ia masih hidup?Relevannya PHP: Adakah ia masih hidup?Apr 14, 2025 am 12:12 AM

PHP masih dinamik dan masih menduduki kedudukan penting dalam bidang pengaturcaraan moden. 1) kesederhanaan PHP dan sokongan komuniti yang kuat menjadikannya digunakan secara meluas dalam pembangunan web; 2) fleksibiliti dan kestabilannya menjadikannya cemerlang dalam mengendalikan borang web, operasi pangkalan data dan pemprosesan fail; 3) PHP sentiasa berkembang dan mengoptimumkan, sesuai untuk pemula dan pemaju yang berpengalaman.

Status Semasa PHP: Lihat trend pembangunan webStatus Semasa PHP: Lihat trend pembangunan webApr 13, 2025 am 12:20 AM

PHP tetap penting dalam pembangunan web moden, terutamanya dalam pengurusan kandungan dan platform e-dagang. 1) PHP mempunyai ekosistem yang kaya dan sokongan rangka kerja yang kuat, seperti Laravel dan Symfony. 2) Pengoptimuman prestasi boleh dicapai melalui OPCACHE dan NGINX. 3) Php8.0 memperkenalkan pengkompil JIT untuk meningkatkan prestasi. 4) Aplikasi awan asli dikerahkan melalui Docker dan Kubernet untuk meningkatkan fleksibiliti dan skalabiliti.

PHP vs Bahasa Lain: PerbandinganPHP vs Bahasa Lain: PerbandinganApr 13, 2025 am 12:19 AM

PHP sesuai untuk pembangunan web, terutamanya dalam pembangunan pesat dan memproses kandungan dinamik, tetapi tidak baik pada sains data dan aplikasi peringkat perusahaan. Berbanding dengan Python, PHP mempunyai lebih banyak kelebihan dalam pembangunan web, tetapi tidak sebaik python dalam bidang sains data; Berbanding dengan Java, PHP melakukan lebih buruk dalam aplikasi peringkat perusahaan, tetapi lebih fleksibel dalam pembangunan web; Berbanding dengan JavaScript, PHP lebih ringkas dalam pembangunan back-end, tetapi tidak sebaik JavaScript dalam pembangunan front-end.

PHP vs Python: Ciri dan Fungsi TerasPHP vs Python: Ciri dan Fungsi TerasApr 13, 2025 am 12:16 AM

PHP dan Python masing -masing mempunyai kelebihan sendiri dan sesuai untuk senario yang berbeza. 1.PHP sesuai untuk pembangunan web dan menyediakan pelayan web terbina dalam dan perpustakaan fungsi yang kaya. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan standard yang kuat. Apabila memilih, ia harus diputuskan berdasarkan keperluan projek.

PHP: Bahasa utama untuk pembangunan webPHP: Bahasa utama untuk pembangunan webApr 13, 2025 am 12:08 AM

PHP adalah bahasa skrip yang digunakan secara meluas di sisi pelayan, terutamanya sesuai untuk pembangunan web. 1.PHP boleh membenamkan HTML, memproses permintaan dan respons HTTP, dan menyokong pelbagai pangkalan data. 2.PHP digunakan untuk menjana kandungan web dinamik, data borang proses, pangkalan data akses, dan lain -lain, dengan sokongan komuniti yang kuat dan sumber sumber terbuka. 3. PHP adalah bahasa yang ditafsirkan, dan proses pelaksanaan termasuk analisis leksikal, analisis tatabahasa, penyusunan dan pelaksanaan. 4.Php boleh digabungkan dengan MySQL untuk aplikasi lanjutan seperti sistem pendaftaran pengguna. 5. Apabila debugging php, anda boleh menggunakan fungsi seperti error_reporting () dan var_dump (). 6. Mengoptimumkan kod PHP untuk menggunakan mekanisme caching, mengoptimumkan pertanyaan pangkalan data dan menggunakan fungsi terbina dalam. 7

See all articles

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.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft