Kacam.net

डेटाबेस

先查再改,为什么会丢

「包进事务里不就行了」——事务到底挡住了什么?

प्रॉम्प्ट कॉपी करें, फिर कोई एक मॉडल चुनें। वह जवाब थमाने के बजाय इंटरव्यू लेने वाले की तरह दृश्य दर दृश्य आपसे पूछेगा।

ChatGPT Claude DeepSeek 豆包 Kimi Gemini

जिस फ़ोन में ऐप लगा है, वहाँ सिस्टम सीधे ऐप खोल देगा। WeChat के अंदर बाहरी ऐप नहीं खुलते — पहले ब्राउज़र में खोलें।

कॉपी किए हुए पाठ के आख़िर में वही उत्तर-कुंजी है जिससे मॉडल आपको आँकता है। पहले खुद न पढ़ें — खुद तक पहुँचना ही असली बात है।

这是所有并发 bug 里最常见的一种形状:读出来、判断一下、再写回去。而「加个事务」几乎不解决它 —— 两个事务照样能分别读到 stock = 1。

这一份要你自己画出那条让库存变成 -1 的时间线,然后一步步收窄:把判断挪进 WHERE、看受影响行数、什么时候该用版本号、什么时候该交给唯一约束。

有一问值得先想想:「打开编辑器就锁住、保存时才放」为什么在 Web 上几乎一定是错的。

★★★☆☆ · लगभग 30 मिनट · क्या परखा जाता है: 读改写的窗口、条件更新、版本号 vs FOR UPDATE、唯一约束

यह किस चीज़ का अभ्यास है

लॉक संस्करण और दृश्यता

यह वाला कर चुके हैं?

साइन इन करके दर्ज करें कि यह अभ्यास कर लिया — अगली बार दिखेगा कि किस दिन किया था।

जिन्होंने यह किया, उनके नोट

अभी किसी ने नहीं लिखा। करने के बाद बताइए कि बातचीत से क्या निकला — किस दृश्य पर अटके, कौन-सा नतीजा बाद में बदला।

नोट लिखने के लिए साइन इन।

इसे कैसे इस्तेमाल करें

यह श्रृंखला सीखने के लिए है: यह राह दिखाती है, कोने में नहीं धकेलती। अटकने पर पहले पूछती है कि किस परत पर अटके हैं (कभी सुना ही नहीं / जानता हूँ पर क्यों नहीं जानता / क्यों जानता हूँ पर लगा नहीं पाता), फिर तय करती है कि क्या देना है। दो बार राह दिखाने के बाद ही सीधे बताती है, और फिर आपसे अपने शब्दों में दोहराने को कहती है।

डिफ़ॉल्ट रूप से यह MySQL / InnoDB के हिसाब से बात करती है —— यहाँ आधे जाल कार्यान्वयन की बारीकियाँ हैं, और क्लस्टर्ड इंडेक्स, टेबल पर वापस जाना और गैप लॉक दूसरी जगह अलग तरह से काम करते हैं। PostgreSQL या कोई और भी चलेगा: पहली ही पंक्ति में बता दें, यह उसी के हिसाब से चलेगी और जहाँ निष्कर्ष बदलते हैं वहाँ बता देगी।

कैसे शुरू करें

  1. एक चुनें, खोलें, प्रॉम्प्ट कॉपी करें।
  2. उसे एक नई खाली चैट में चिपकाएँ और पहली पंक्ति में बताएँ कि कौन-सा डेटाबेस और कौन-सा संस्करण है (न बताएँ तो MySQL 8 मान लिया जाएगा)।
  3. फिर कुछ न कहें और उसके पहले सवाल का इंतज़ार करें।

बीच में कभी भी बोले जा सकने वाले चार शब्द

  • 跳过 तुरंत अगले दृश्य पर
  • 换个说法 इस बिंदु को दूसरे कोण से फिर समझाओ
  • 直说吧 पूरा उत्तर बताओ, फिर मुझसे दोहरवाओ
  • 复盘 सीधे समापन कार्ड पर जाओ

तीन जाल

  • अंत की उत्तर-कुंजी पहले न पढ़ें —— «आम ग़लतफ़हमियाँ» वाला हिस्सा ही हर सवाल का जवाब है।
  • संख्याएँ पूछे जाने के लिए तैयार रहें। «थोड़ा तेज़», «IO बचता है» वहीं काट दिया जाएगा: कितनी पंक्तियाँ? कितनी बार? कितने गुना? बिना संख्या वाला निष्कर्ष रटा हुआ है।
  • जैसे ही यह तारीफ़ शुरू करे, «मेरी तारीफ़ मत करो» वाला नियम याद दिलाएँ। राह दिखाना दुलारना नहीं है।

कंपोजिट इंडेक्स वाली से शुरू करें: यही इस श्रृंखला की नींव है, «लॉक इंडेक्स रिकॉर्ड पर लगते हैं» और «यह इतनी पंक्तियाँ क्यों पढ़ रहा है» दोनों उसी एक वाक्य पर टिके हैं। प्रोडक्शन में कंकरेंसी काट रही हो तो «पढ़कर फिर बदलना» से शुरू करें; क्वेरी धीमी हों तो एग्ज़ीक्यूशन प्लान वाली से।