백엔드 개발 PHP 튜토리얼 几个线程同时进行事务并发的有关问题。

几个线程同时进行事务并发的有关问题。

Jun 13, 2016 pm 01:23 PM
for insert lock select update

几个线程同时进行事务并发的问题。。

几个线程同时进行事务A。。

如果事务A里面有一个步骤1:是对某一个表某条固定记录进行更新操作的。。

问题1:那是不是表行会被锁住,线程之间后一个必须等前一个提交事务才继续(“运行”还是“提交事务”)?

事务A有一个步骤2:是对某个表进行INSERT记录的;
事务A提交前还有一个步骤3:是比较步骤2的数据,如果出现INSERT的记录超过要求,就回滚。。

问题2:如果问题1的答案是提交事务,如果发生并发,步骤3这一步是不是没用了,检测不了?如果答案是运行,那可以防并发吗?

问题3:如果问题2解决不了,是不是一定要在步骤2 INSERT记录前进行这个表的SELECT FOR UPDATE进行行锁?这应该可以解决并发了吧,有没人其它办法呀。

希望有前辈指导一下,谢谢。。。





------解决方案--------------------
问题3:如果问题2解决不了,是不是一定要在步骤2 INSERT记录前进行这个表的SELECT FOR UPDATE进行行锁?这应该可以解决并发了吧,有没人其它办法呀。

上边都不说了,这个问题是关键。 一定要for update锁住,你完全可以认为for update就是lock加锁,只有这样才能保证原子性,否则一个这样的事务真心没法原子性:

1,查询A
2,A满足条件则更新A

如果1,2不是原子的,那么查询A和更新A中间会有其他操作修改A,怎么办?把1,2整体锁住就行了,for update是一种办法,尤其是innodb可以行锁,所以比直接lock table好用。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

kernel_security_check_failure 블루 스크린을 해결하는 17가지 방법 kernel_security_check_failure 블루 스크린을 해결하는 17가지 방법 Feb 12, 2024 pm 08:51 PM

Kernelsecuritycheckfailure(커널 검사 실패)는 비교적 일반적인 유형의 중지 코드입니다. 그러나 이유가 무엇이든 블루 스크린 오류로 인해 많은 사용자가 매우 괴로워합니다. 이 사이트에서는 사용자에게 17가지 유형을 주의 깊게 소개합니다. kernel_security_check_failure 블루 스크린에 대한 17가지 솔루션 방법 1: 모든 외부 장치 제거 사용 중인 외부 장치가 Windows 버전과 호환되지 않으면 Kernelsecuritycheckfailure 블루 스크린 오류가 발생할 수 있습니다. 이렇게 하려면 컴퓨터를 다시 시작하기 전에 모든 외부 장치를 분리해야 합니다.

KDE Plasma 6.1은 널리 사용되는 Linux 데스크탑에 많은 향상된 기능을 제공합니다. KDE Plasma 6.1은 널리 사용되는 Linux 데스크탑에 많은 향상된 기능을 제공합니다. Jun 23, 2024 am 07:54 AM

여러 번의 사전 릴리스 이후 KDE 플라즈마 개발 팀은 2월 28일 처음으로 Qt6 프레임워크를 사용하는 Linux 및 BSD 시스템용 데스크탑 환경 버전 6.0을 공개했습니다. KDE Plasma 6.1에는 이제 여러 가지 새로운 기능이 포함되어 있습니다.

Microsoft 호환성 원격 측정의 높은 CPU 사용량에 대한 솔루션 Microsoft 호환성 원격 측정의 높은 CPU 사용량에 대한 솔루션 Mar 16, 2024 pm 10:16 PM

win10 시스템을 사용하다 보면 가끔 컴퓨터가 멈추는 상황이 발생합니다. 그런 다음 백그라운드 프로세스를 확인하면 Microsoft 호환성 원격 측정 프로세스가 특히 많은 양의 리소스를 차지하는 것을 발견합니다. 사용자는 타사 보호 소프트웨어를 제거한 다음 클린 부팅을 시도하여 작동할 수 있습니다. 이 사이트에서는 Microsoft 호환성 원격 측정의 높은 CPU 사용량에 대한 솔루션을 사용자에게 주의 깊게 소개합니다. Microsoftcompatibilitytelemetry의 높은 CPU 사용량에 대한 해결 방법 방법 1: 타사 보호 소프트웨어를 제거한 후 시도

mysql에서 삽입 무시, 삽입 및 교체의 차이점은 무엇입니까 mysql에서 삽입 무시, 삽입 및 교체의 차이점은 무엇입니까 May 29, 2023 pm 04:40 PM

insertignore, insert 및 replacement 명령어의 차이가 이미 존재하는지 여부 ;replace insertintonames(name,age)values("Xiao Ming", 25); 테이블 요구 사항: PrimaryKey 또는 고유 인덱스 결과: 테이블 ID가 자동으로 증가되어 테이블이 생성됩니다.

Win10에서 비즈니스용 Skype를 제거하는 방법은 무엇입니까? 컴퓨터에서 Skype를 완전히 제거하는 방법 Win10에서 비즈니스용 Skype를 제거하는 방법은 무엇입니까? 컴퓨터에서 Skype를 완전히 제거하는 방법 Feb 13, 2024 pm 12:30 PM

Win10 스카이프를 제거할 수 있습니까? 이것은 많은 사용자가 알고 싶어하는 질문입니다. 많은 사용자가 이 응용 프로그램이 컴퓨터의 기본 프로그램에 포함되어 있고 이를 삭제하면 시스템 작동에 영향을 미칠 것이라고 걱정하기 때문입니다. 이 웹사이트 도움말 사용자 Win10에서 비즈니스용 Skype를 제거하는 방법을 자세히 살펴보겠습니다. Win10에서 비즈니스용 Skype를 제거하는 방법 1. 컴퓨터 바탕 화면에서 Windows 아이콘을 클릭한 다음 설정 아이콘을 클릭하여 들어갑니다. 2. "적용"을 클릭하세요. 3. 검색창에 "Skype"를 입력하고 검색된 결과를 클릭하여 선택하세요. 4. "제거"를 클릭하세요. 5

jquery에서 선택 요소를 숨기는 방법 jquery에서 선택 요소를 숨기는 방법 Aug 15, 2023 pm 01:56 PM

jquery에서 선택 요소를 숨기는 방법: 1. hide() 메서드, HTML 페이지에 jQuery 라이브러리를 도입하고 다른 선택기를 사용하여 선택 요소를 숨길 수 있습니다. ID 선택기는 selectId를 선택한 선택 요소의 ID로 바꿉니다. 2. css() 메서드, ID 선택기를 사용하여 숨겨야 하는 선택 요소를 선택하고, css() 메서드를 사용하여 표시 속성을 없음으로 설정하고, selectId를 선택 요소의 ID로 바꿉니다.

SQL에서 UPDATE 문을 사용하는 방법 SQL에서 UPDATE 문을 사용하는 방법 Jun 02, 2023 pm 09:13 PM

SQLUPDATE 문 Update 문은 테이블의 데이터를 수정하는 데 사용됩니다. 구문은 다음과 같습니다. UPDATE 테이블 이름 SET 열 이름 = 새 값 WHERE 열 이름 = 특정 값 "Person" 테이블: LastNameFirstNameAddressCityGatesBillXuanwumen10BeijingWilsonChamps-Elysees 특정 행의 열 업데이트 UPDATEPerson SETFirstName="Fred" WHERELastName="Wilson" 결과: LastNa

Select Channels의 비동기 처리 방법 golang을 이용한 Go 동시 프로그래밍 Select Channels의 비동기 처리 방법 golang을 이용한 Go 동시 프로그래밍 Sep 28, 2023 pm 05:27 PM

golang을 사용한 SelectChannelsGo 동시 프로그래밍의 비동기 처리 방법 소개: 동시 프로그래밍은 현대 소프트웨어 개발에서 중요한 영역으로, 애플리케이션의 성능과 응답성을 효과적으로 향상시킬 수 있습니다. Go 언어에서는 채널 및 Select 문을 사용하여 동시 프로그래밍을 간단하고 효율적으로 구현할 수 있습니다. 이 기사에서는 SelectChannelsGo 동시 프로그래밍의 비동기 처리 방법에 golang을 사용하는 방법을 소개하고 구체적인 내용을 제공합니다.

See all articles