下订单时,使用事务行锁,数据库同一时刻只能进行一个事务的处理?
我看了这几篇文章:
http://www.blogjava.net/loocky/archive/2006/11/15/81138.html
http://blog.csdn.net/xifeijian/article/details/20313977
http://betakoli.iteye.com/blog/2257095
http://www.cnblogs.com/chenwenbiao/archive/2012/06/06/2537508.html
这上面几篇文章讲了 mysql
InnoDB
的一些事务锁的使用,感觉里面都说到了下单时的减库存所定一行(FOR UPDATE
)的这种情况,也就是说同一时刻,只能有一个下单的事务在执行,也就是说这是串行的?
这就跟去超市买东西结账时一张,收银员只能一个一个的结账,而我们只能提着篮子排队等着。
这是数据库的同一时刻是什么时间概念呢,同一秒,同一毫秒?还是根本就没有时间的概念,只是空间的概念,就是同一时空只有一个事务在执行,其它的排队等着吧?
计算机不就是为了解放人类的吗?那现在它这样和超市结账时要我们排队等着有什么分别呢?这样不显得Low吗?
那淘宝一秒钟上亿的成交,也是这样一个一个的“提交”订单的吗?如果是这样怎么可能一秒能有这么大的交易量呢?
另外再帮我看看这个问题:http://segmentfault.com/q/1010000004062810
谢谢了!
回复内容:
我看了这几篇文章:
http://www.blogjava.net/loocky/archive/2006/11/15/81138.html
http://blog.csdn.net/xifeijian/article/details/20313977
http://betakoli.iteye.com/blog/2257095
http://www.cnblogs.com/chenwenbiao/archive/2012/06/06/2537508.html
这上面几篇文章讲了 mysql
InnoDB
的一些事务锁的使用,感觉里面都说到了下单时的减库存所定一行(FOR UPDATE
)的这种情况,也就是说同一时刻,只能有一个下单的事务在执行,也就是说这是串行的?
这就跟去超市买东西结账时一张,收银员只能一个一个的结账,而我们只能提着篮子排队等着。
这是数据库的同一时刻是什么时间概念呢,同一秒,同一毫秒?还是根本就没有时间的概念,只是空间的概念,就是同一时空只有一个事务在执行,其它的排队等着吧?
计算机不就是为了解放人类的吗?那现在它这样和超市结账时要我们排队等着有什么分别呢?这样不显得Low吗?
那淘宝一秒钟上亿的成交,也是这样一个一个的“提交”订单的吗?如果是这样怎么可能一秒能有这么大的交易量呢?
另外再帮我看看这个问题:http://segmentfault.com/q/1010000004062810
谢谢了!
异步就可以解决你说的问题。
通过分布式和集群来开多条收费口。就可以解决你的问题了。
行锁,又不是表锁。另外都是微秒级的锁,为了保证acid就要加锁,不然就NoSQL
第一:行锁是只锁一行,并不是以时间为单位来锁定的,而是操作完成就释放,根据数据库的负载,数据量的情况这个操作时间不等的!这个时候有事物去操作其他行是不受影响的,所以一秒钟下很多单,只要不是操作同一条记录,只要服务器撑得住,是没任何问题的。
第二:像淘宝这样下这么多单,看过相关的技术介绍,大致分为两块,一是分库分表,像他们的订单表就分成1000多个库,每个库后面可以再做集群,这就是为什么每秒可以支撑那么多交易的强大支撑,二是有可能很多操作,操作成功不一定就立即持久化到数据库,有可能是中间缓存之类的,后端任务去持久化到数据库去。
这只是个人的一些理解,希望知道的大神斧正。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

L'un des changements majeurs introduits dans MySQL 8.4 (la dernière version LTS en 2024) est que le plugin « MySQL Native Password » n'est plus activé par défaut. De plus, MySQL 9.0 supprime complètement ce plugin. Ce changement affecte PHP et d'autres applications

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

CMS signifie Système de gestion de contenu. Il s'agit d'une application logicielle ou d'une plate-forme qui permet aux utilisateurs de créer, gérer et modifier du contenu numérique sans nécessiter de connaissances techniques avancées. Le CMS permet aux utilisateurs de créer et d'organiser facilement du contenu tel que du texte, des images, des vidéos et des documents, et de le publier sur des sites Web ou d'autres plateformes numériques.

Les tableaux sont des structures de données linéaires utilisées pour traiter les données dans la programmation. Parfois, lorsque nous traitons les tableaux, nous devons ajouter de nouveaux éléments au tableau existant. Dans cet article, nous discuterons de plusieurs façons d'ajouter des éléments à la fin d'un tableau en PHP, avec des exemples de code, une sortie et une analyse de complexité du temps et de l'espace pour chaque méthode. Voici les différentes façons d'ajouter des éléments à un tableau: Utilisez des crochets [] En PHP, la façon d'ajouter des éléments à la fin d'un tableau est d'utiliser des crochets []. Cette syntaxe ne fonctionne que dans les cas où nous ne voulons ajouter qu'un seul élément. Ce qui suit est la syntaxe: $ array [] = valeur; Exemple
