# ਸ਼ੌਪੀਫਾਈ ਨੇ ਵਸਤੂ ਸੂਚੀ ਰਿਜ਼ਰਵੇਸ਼ਨਾਂ ਨੂੰ MySQL ਵਿੱਚ ਭੇਜਿਆ

Published: 2026-10-10

ਸ਼ੌਪੀਫਾਈ ਨੇ ਆਪਣੀ ਵਸਤੂ ਸੂਚੀ ਰਿਜ਼ਰਵੇਸ਼ਨ ਪ੍ਰਣਾਲੀ ਨੂੰ ਰੇਡਿਸ ਤੋਂ MySQL ਡਾਟਾਬੇਸ ਵਿੱਚ ਭੇਜਿਆ ਜੋ ਪਹਿਲਾਂ ਹੀ ਵਸਤੂ ਸੂਚੀ ਲੈਜਰ ਰੱਖਦਾ ਸੀ। ਵਿਅਕਤੀਗਤ ਤੌਰ 'ਤੇ ਲਾਕ ਹੋਣ ਯੋਗ ਯੂਨਿਟ ਕਤਾਰਾਂ ਦਾ ਇੱਕ ਸੀਮਤ ਪੂਲ ਸਮਕਾਲੀ ਚੈਕਆਉਟਸ ਨੂੰ ਵੱਖ-ਵੱਖ ਯੋਗ ਯੂਨਿਟਾਂ ਦੀ ਚੋਣ ਕਰਨ ਲਈ SKIP LOCKED ਦੀ ਵਰਤੋਂ ਕਰਨ ਦਿੰਦਾ ਹੈ। ਡਿਜ਼ਾਈਨ ਟ੍ਰਾਂਜੈਕਸ਼ਨ ਸੀਮਾਵਾਂ, ਪ੍ਰਾਇਮਰੀ-ਕੀ ਲੇਆਉਟ, ਰੀਪਲੇਨਿਸ਼ਮੈਂਟ ਨਿਯਮਾਂ ਅਤੇ ਚੈਕਆਉਟ ਵਿੱਚ ਕੁਨੈਕਸ਼ਨ ਹੋਲਡ ਸਮੇਂ ਨੂੰ ਦੇਖਣ 'ਤੇ ਵੀ ਨਿਰਭਰ ਕਰਦਾ ਹੈ।

Canonical: https://thedailydiff.dev/pa/video/shopify-reservation-locks/

## ਇਹ ਵੀਡੀਓ ਕੀ ਕਵਰ ਕਰਦਾ ਹੈ

- ਪੁਰਾਣੇ ਰੇਡਿਸ ਮਾਤਰਾ-ਕਾਉਂਟਰ ਮਾਡਲ ਨੇ ਸਮਕਾਲੀਤਾ ਨੂੰ ਸੰਭਾਲਿਆ, ਪਰ ਰਿਜ਼ਰਵੇਸ਼ਨ ਕਲੀਨਅੱਪ ਅਤੇ MySQL ਲੈਜਰ ਅਪਡੇਟ ਇੱਕ ਸਿੰਗਲ ਸਥਾਨਕ ਐਟੋਮਿਕ ਟ੍ਰਾਂਜੈਕਸ਼ਨ ਨੂੰ ਸਾਂਝਾ ਨਹੀਂ ਕਰ ਸਕਦੇ ਸਨ।
- ਬਦਲਵਾਂ ਹੱਲ ਪ੍ਰਤੀ ਆਈਟਮ/ਸਥਾਨ ਸੰਯੋਜਨ 'ਤੇ 1,000 ਦੀ ਸੀਮਾ ਵਾਲੇ ਪੂਲ ਵਿੱਚ ਪ੍ਰਤੀ ਉਪਲਬਧ ਯੂਨਿਟ ਇੱਕ ਕਤਾਰ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਇੱਕ ਖਾਲੀ ਪੂਲ ਰੀਪਲੇਨਿਸ਼ਮੈਂਟ ਲਾਕ ਦੇ ਪਿੱਛੇ ਉਡੀਕ ਕਰ ਰਹੇ ਸਮਕਾਲੀ ਬੇਨਤੀਆਂ ਦੇ ਨਾਲ ਇਨਲਾਈਨ ਰੀਪਲੇਨਿਸ਼ਮੈਂਟ ਨੂੰ ਚਾਲੂ ਕਰ ਸਕਦਾ ਹੈ।
- ਸੰਯੁਕਤ ਪ੍ਰਾਇਮਰੀ ਕੁੰਜੀ (shop\_id, inventory\_item\_id, inventory\_group\_id, id) ਹੈ। ਸ਼ੌਪੀਫਾਈ ਨੇ ਆਪਣੇ ਪ੍ਰੋਟੋਟਾਈਪ ਵਿੱਚ ਲਾਕ ਓਵਰਹੈੱਡ ਨੂੰ ਘਟਾਇਆ ਅਤੇ ਰੀਪਲੇਨਿਸ਼ਮੈਂਟ ਨੂੰ ਰੋਕਣ ਵਾਲੇ ਗੈਪ ਲਾਕ ਤੋਂ ਬਚਣ ਲਈ READ COMMITTED ਦੀ ਵਰਤੋਂ ਕੀਤੀ।
- ਰਿਜ਼ਰਵ ਰਿਜ਼ਰਵੇਸ਼ਨ ਰਿਕਾਰਡਾਂ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਪੂਲ ਕਤਾਰਾਂ ਨੂੰ ਮਿਟਾਉਂਦਾ ਹੈ। ਕਮਿਟਿੰਗ ਡਾਟਾਬੇਸ ਲਾਕ ਜਾਰੀ ਕਰਦੀ ਹੈ ਜਦੋਂ ਕਿ ਭੁਗਤਾਨ ਭਰ ਵਿੱਚ ਸਟੋਰ ਕੀਤੀ ਹੋਲਡ ਬਣੀ ਰਹਿੰਦੀ ਹੈ; ਸਫਲ ਭੁਗਤਾਨ ਲੈਜਰ ਦਾ ਦਾਅਵਾ ਕਰਦਾ ਹੈ ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਇੱਕ ਐਟੋਮਿਕ ਟ੍ਰਾਂਜੈਕਸ਼ਨ ਵਿੱਚ ਰਿਜ਼ਰਵੇਸ਼ਨ ਨੂੰ ਹਟਾ ਦਿੰਦਾ ਹੈ।
- MySQL SKIP LOCKED ਨੂੰ ਇੱਕ ਅਸੰਗਤ ਦ੍ਰਿਸ਼ ਵਜੋਂ ਦਸਤਾਵੇਜ਼ ਕਰਦਾ ਹੈ ਜੋ ਲਾਕ ਕੀਤੀਆਂ ਕਤਾਰਾਂ ਨੂੰ ਛੱਡ ਦਿੰਦਾ ਹੈ। ਇਹ ਇੱਕ ਸੰਪੂਰਨ ਸਟਾਕ ਗਿਣਤੀ ਜਾਂ ਨਿਰਪੱਖ ਵਾਰੀ-ਵਾਰੀ ਲੈਣ-ਦੇਣ ਨੂੰ ਸਥਾਪਤ ਨਹੀਂ ਕਰਦਾ, ਸਿਰਫ਼ ਕਤਾਰ-ਪੱਧਰ ਦੇ ਲਾਕਾਂ 'ਤੇ ਲਾਗੂ ਹੁੰਦਾ ਹੈ ਅਤੇ ਸਟੇਟਮੈਂਟ-ਅਧਾਰਿਤ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਲਈ ਅਸੁਰੱਖਿਅਤ ਹੈ।
- ਸਰੋਤ ਉਦਾਹਰਨ ਵਿੱਚ expires\_at ਸ਼ਾਮਲ ਹੈ, ਪਰ ਸ਼ੌਪੀਫਾਈ MySQL ਮਿਆਦ ਪੁੱਗਣ-ਕਲੀਨਅੱਪ ਐਲਗੋਰਿਦਮ ਨੂੰ ਦਸਤਾਵੇਜ਼ ਨਹੀਂ ਕਰਦਾ ਹੈ। ਵੀਡੀਓ ਦੀ ਰੀਲੀਜ਼/ਮਿਆਦ ਪੁੱਗਣ ਦੀ ਸ਼ਾਖਾ ਇੱਕ ਵਿਆਖਿਆਤਮਕ ਜੀਵਨ ਚੱਕਰ ਦੀ ਲੋੜ ਹੈ।
- ਹੋਰ ਚੈਕਆਉਟ ਕੋਡ ਵਿੱਚ ਕੁਨੈਕਸ਼ਨ ਹੋਲਡ ਸਮਾਂ ਅੰਤਿਮ ਥ੍ਰੂਪੁੱਟ ਬੋਤਲਨੇਕ ਸੀ। ਸ਼ੌਪੀਫਾਈ ਨੇ ਦੋਵਾਂ ਪ੍ਰਣਾਲੀਆਂ ਨੂੰ ਸ਼ੈਡੋ-ਰਾਈਟ ਕੀਤਾ, ਨਤੀਜਿਆਂ ਦੀ ਤੁਲਨਾ ਕੀਤੀ ਅਤੇ ਰੇਡਿਸ ਕਿੱਲ-ਸਵਿੱਚ ਫਾਲਬੈਕ ਨਾਲ ਹੌਲੀ-ਹੌਲੀ ਸਵਿੱਚ ਕੀਤਾ।

## ਅਧਿਆਇ

- 0:00 ਰਿਜ਼ਰਵੇਸ਼ਨਾਂ ਨੂੰ MySQL ਵਿੱਚ ਕਿਉਂ ਭੇਜਣਾ ਹੈ?
- 0:29 ਦੋ ਸਟੋਰ ਖਤਰਨਾਕ ਕਿਉਂ ਸਨ?
- 0:52 ਲਾਕ ਕਰਨ ਯੋਗ ਇਕਾਈ ਕੀ ਬਣ ਜਾਂਦੀ ਹੈ?
- 1:15 ਜਦੋਂ ਪੂਲ ਖਾਲੀ ਹੋ ਜਾਂਦਾ ਹੈ ਤਾਂ ਕੀ ਹੁੰਦਾ ਹੈ?
- 2:14 SKIP LOCKED ਕੀ ਛੱਡਦਾ ਹੈ?
- 2:26 ਅਸਲੀ ਸੀਲਿੰਗ ਕਿੱਥੇ ਸੀ?
- 2:38 ਮੈਂ ਇਸ ਡਿਜ਼ਾਈਨ ਨੂੰ ਕਿਉਂ ਭੇਜਾਂਗਾ?

## ਅਨੁਵਾਦਿਤ ਟ੍ਰਾਂਸਕ੍ਰਿਪਟ

ਮੂਲ ਅੰਗਰੇਜ਼ੀ ਬਿਰਤਾਂਤ ਤੋਂ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ। ਉਪਲਬਧ ਆਡੀਓ ਅਤੇ ਕੈਪਸ਼ਨ YouTube ਦੁਆਰਾ ਨਿਯੰਤਰਿਤ ਕੀਤੇ ਜਾਂਦੇ ਹਨ।

### ਰਿਜ਼ਰਵੇਸ਼ਨਾਂ ਨੂੰ MySQL ਵਿੱਚ ਕਿਉਂ ਭੇਜਣਾ ਹੈ?

0:00 ਇੱਕ ਚੈਕਆਉਟ ਨੂੰ ਤੇਜ਼ ਰਹਿਣ ਲਈ ਰੇਡਿਸ ਦੀ ਲੋੜ ਹੈ। ਸ਼ੌਪੀਫਾਈ ਨੇ ਵਸਤੂ ਸੂਚੀ ਰਿਜ਼ਰਵੇਸ਼ਨਾਂ ਨੂੰ MySQL ਵਿੱਚ ਪ੍ਰਤੀ ਯੂਨਿਟ ਇੱਕ ਕਤਾਰ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਭੇਜਿਆ ਇੱਕ ਸੀਮਤ ਪੂਲ ਵਿੱਚ। MySQL ਕਿਉਂ ਚੁਣੋ? ਤੁਸੀਂ ਲਾਕਸ ਨੂੰ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਕਿਵੇਂ ਛੱਡਦੇ ਹੋ? ਇਹ ਪਰਦੇ ਦੇ ਪਿੱਛੇ The Daily Diff ਹੈ। ਅਤੇ ਤੇਜ਼ ਸਵਾਲ ਫਿਰ ਵੀ ਸੀਲਿੰਗ ਨੂੰ ਕਿਉਂ ਮਾਰਦੇ ਸਨ? ਸ਼ੌਪੀਫਾਈ ਆਨਲਾਈਨ ਅਤੇ ਵਿਅਕਤੀਗਤ ਤੌਰ 'ਤੇ ਵੇਚਣ ਲਈ ਇੱਕ ਵਣਜ ਪਲੇਟਫਾਰਮ ਹੈ। ਰੇਡਿਸ ਇੱਕ ਇਨ-ਮੈਮਰੀ ਡਾਟਾ ਸਟੋਰ ਹੈ।

0:21 MySQL ਇੱਕ ਰਿਲੇਸ਼ਨਲ ਡਾਟਾਬੇਸ ਹੈ, ਅਤੇ ਸ਼ੌਪੀਫਾਈ ਪਹਿਲਾਂ ਹੀ ਆਪਣੀ ਵਸਤੂ ਸੂਚੀ ਲੈਜਰ ਰੱਖਦਾ ਸੀ ਉੱਥੇ। ਇੱਕ ਰਿਜ਼ਰਵੇਸ਼ਨ ਸੰਖੇਪ ਵਿੱਚ ਸਟਾਕ ਰੱਖਦੀ ਹੈ ਜਦੋਂ ਇੱਕ ਖਰੀਦਦਾਰ ਭੁਗਤਾਨ ਕਰਦਾ ਹੈ।

### ਦੋ ਸਟੋਰ ਖਤਰਨਾਕ ਕਿਉਂ ਸਨ?

0:29 ਉਨ੍ਹਾਂ ਦਾ ਰੇਡਿਸ ਮਾਡਲ ਨੇ ਇੱਕ ਆਈਟਮ ਕਾਊਂਟਰ ਨੂੰ ਘਟਾਇਆ। ਇੱਕ ਅਦਾਇਗੀਸ਼ੁਦਾ ਆਰਡਰ ਦਾ ਦਾਅਵਾ ਕਰਨ ਦਾ ਮਤਲਬ MySQL ਲੈਜਰ ਨੂੰ ਅਪਡੇਟ ਕਰਨਾ ਅਤੇ ਰੇਡਿਸ ਨੂੰ ਸਾਫ਼ ਕਰਨਾ ਸੀ। ਉਹ ਵੱਖਰੀਆਂ ਲਿਖਤਾਂ ਸਟਾਕ ਨੂੰ ਦੋ ਵਾਰ ਵੇਚਿਆ ਜਾਂ ਅਣਉਪਲਬਧ ਛੱਡ ਸਕਦੀਆਂ ਸਨ ਜਦੋਂ ਇਹ ਹੋਣਾ ਚਾਹੀਦਾ ਸੀ ਵੇਚਣ ਯੋਗ ਹੋਵੇ। ਪੁਰਾਣੇ ਮਾਡਲ ਵਿੱਚ ਸਥਾਨ ਜਾਗਰੂਕਤਾ ਦੀ ਵੀ ਘਾਟ ਸੀ। ਬਦਲਵਾਂ ਹੱਲ ਕਿਤੇ ਅਜਿਹੀ ਜਗ੍ਹਾ ਤੋਂ ਸਟਾਕ ਦੀ ਚੋਣ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਜੋ ਆਰਡਰ ਨੂੰ ਪੂਰਾ ਕਰ ਸਕੇ। ਗਲਤ ਮਹਾਂਦੀਪ 'ਤੇ ਇੱਕ ਗੋਦਾਮ ਇੱਕ ਸ਼ਾਨਦਾਰ ਡਾਟਾਬੇਸ ਐਂਟਰੀ ਅਤੇ ਇੱਕ ਭਿਆਨਕ ਡਿਲੀਵਰੀ ਵਾਅਦਾ ਕਰਦਾ ਹੈ। ਪਹਿਲਾਂ ਦੇ MySQL ਯਤਨਾਂ ਨੇ ਇੱਕ ਮਾਤਰਾ ਕਤਾਰ ਦੀ ਵਰਤੋਂ ਕੀਤੀ, ਇਸ ਲਈ ਮੁਕਾਬਲਾ ਕਰਨ ਵਾਲੇ ਚੈਕਆਉਟਸ ਉਸੇ 'ਤੇ ਕਤਾਰ ਵਿੱਚ ਲੱਗੇ ਹੋਏ ਸਨ

### ਲਾਕ ਕਰਨ ਯੋਗ ਇਕਾਈ ਕੀ ਬਣ ਜਾਂਦੀ ਹੈ?

0:56 ਲਾਕ। ਇੱਕ ਸਪ੍ਰੈਡਸ਼ੀਟ ਸੈੱਲ ਦੇ ਆਲੇ ਦੁਆਲੇ ਇੱਕ ਵੇਲਵੇਟ ਰੱਸੀ ਬਾਰੇ ਸੋਚੋ। ਹੋਰ ਕਰਮਚਾਰੀ ਜੋੜਨਾ ਸਿਰਫ਼ ਕਤਾਰ ਨੂੰ ਲੰਬਾ ਕਰਦਾ ਹੈ। ਸ਼ੌਪੀਫਾਈ ਨੇ ਲਾਕ ਕਰਨ ਯੋਗ ਵਸਤੂ ਨੂੰ ਬਦਲਿਆ। ਹਰੇਕ ਉਪਲਬਧ ਇਕਾਈ ਨੂੰ ਆਪਣੀ ਕਤਾਰ ਮਿਲਦੀ ਹੈ। ਇੱਕ ਲਾਕਿੰਗ ਰੀਡ ਦੂਜੀ ਇਕਾਈਆਂ ਨੂੰ ਛੱਡ ਦਿੰਦੀ ਹੈ ਟ੍ਰਾਂਜੈਕਸ਼ਨ ਹੋਲਡ ਕਰਦਾ ਹੈ ਅਤੇ ਹੋਰ ਯੋਗ ਦੀ ਚੋਣ ਕਰਦਾ ਹੈ ਇਕਾਈਆਂ। ਵੱਖ-ਵੱਖ ਕਰਮਚਾਰੀ ਵੱਖਰੀਆਂ ਕਤਾਰਾਂ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹਨ, ਜਦੋਂ ਕਿ ਗਰਮ ਕਾਊਂਟਰ ਉਨ੍ਹਾਂ ਦੇ ਰਾਹ ਤੋਂ ਬਾਹਰ ਰਹਿੰਦਾ ਹੈ।

### ਜਦੋਂ ਪੂਲ ਖਾਲੀ ਹੋ ਜਾਂਦਾ ਹੈ ਤਾਂ ਕੀ ਹੁੰਦਾ ਹੈ?

1:15 ਉਹ ਪੂਲ ਪ੍ਰਤੀ ਆਈਟਮ ਅਤੇ ਸਥਾਨ ਇੱਕ ਹਜ਼ਾਰ ਕਤਾਰਾਂ 'ਤੇ ਸੀਮਤ ਹੈ। ਰੀਪਲੇਨਿਸ਼ਮੈਂਟ ਲੈਜਰ ਤੋਂ ਖਿੱਚਦਾ ਹੈ। ਜੇ ਇਹ ਖਾਲੀ ਹੋ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਰਿਜ਼ਰਵ ਮਾਰਗ ਇਨਲਾਈਨ ਰੀਪਲੇਨਿਸ਼ ਕਰਦਾ ਹੈ, ਮੁਕਾਬਲਾ ਕਰਨ ਵਾਲੀਆਂ ਬੇਨਤੀਆਂ ਦੇ ਨਾਲ ਇੱਕ ਰੀਪਲੇਨਿਸ਼ਮੈਂਟ ਲਾਕ ਦੇ ਪਿੱਛੇ ਉਡੀਕ ਕਰ ਰਹੇ ਹਾਂ। ਖਾਲੀ ਪੂਲ ਦਾ ਮਤਲਬ ਖਾਲੀ ਗੋਦਾਮ ਨਹੀਂ ਹੈ। ਰਿਜ਼ਰਵ ਚੁਣੀਆਂ ਗਈਆਂ ਪੂਲ ਕਤਾਰਾਂ ਨੂੰ ਮਿਟਾਉਂਦਾ ਹੈ, ਫਿਰ ਇੱਕ ਵਿੱਚ ਰਿਜ਼ਰਵੇਸ਼ਨ ਰਿਕਾਰਡ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ ਟ੍ਰਾਂਜੈਕਸ਼ਨ। ਕਮਿਟ ਡਾਟਾਬੇਸ ਲਾਕ ਜਾਰੀ ਕਰਦਾ ਹੈ।

1:35 ਰੋਲਬੈਕ ਬਦਲਾਵਾਂ ਨੂੰ ਵਾਪਸ ਕਰ ਦਿੰਦਾ ਹੈ। ਰਿਜ਼ਰਵੇਸ਼ਨ ਭੁਗਤਾਨ ਪ੍ਰੋਸੈਸਿੰਗ ਦੌਰਾਨ ਸਟੋਰ ਕੀਤੀ ਸਥਿਤੀ ਵਜੋਂ ਬਚੀ ਰਹਿੰਦੀ ਹੈ। ਸਫਲ ਭੁਗਤਾਨ ਲੈਜਰ ਦਾ ਦਾਅਵਾ ਕਰਦਾ ਹੈ ਅਤੇ ਰਿਜ਼ਰਵੇਸ਼ਨ ਨੂੰ ਐਟੋਮਿਕ ਤੌਰ 'ਤੇ ਹਟਾ ਦਿੰਦਾ ਹੈ। ਡਾਟਾਬੇਸ ਲਾਕ ਨੂੰ ਕਦੇ ਵੀ ਭੁਗਤਾਨ ਫਾਰਮ ਦੀ ਦੇਖਭਾਲ ਕਰਨ ਦੀ ਲੋੜ ਨਹੀਂ ਹੁੰਦੀ। ਉਨ੍ਹਾਂ ਦੀ ਸੰਯੁਕਤ ਪ੍ਰਾਇਮਰੀ ਕੁੰਜੀ ਦੁਕਾਨ, ਆਈਟਮ ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ, ਸਮੂਹ, ਫਿਰ ਇਕਾਈ ਦੀ ਪਛਾਣ। ਲੁੱਕਅੱਪ ਦਾ ਮੇਲ ਉਨ੍ਹਾਂ ਦੇ ਪ੍ਰੋਟੋਟਾਈਪ ਵਿੱਚ ਇੰਡੈਕਸ ਲਾਕਿੰਗ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ। ਉਹ ਪੂਲ ਨੂੰ ਰੋਕਣ ਵਾਲੇ ਗੈਪ ਲਾਕ ਤੋਂ ਬਚਣ ਲਈ ਪੜ੍ਹੇ ਗਏ ਕਮਿਟੇਡ ਦੀ ਵੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ

1:57 ਰੀਪਲੇਨਿਸ਼ਮੈਂਟ, ਅਤੇ ਸਰਕੂਲਰ ਉਡੀਕਾਂ ਨੂੰ ਰੋਕਣ ਲਈ ਇੱਕ ਇਕਸਾਰ ਸਾਰਣੀ ਕ੍ਰਮ। ਪ੍ਰਕਾਸ਼ਿਤ ਉਦਾਹਰਨ ਇੱਕ ਮਿਆਦ ਪੁੱਗਣ ਦਾ ਸਮਾਂ ਰਿਕਾਰਡ ਕਰਦੀ ਹੈ। ਛੱਡੇ ਗਏ ਭੁਗਤਾਨਾਂ ਨੂੰ ਅੰਤ ਵਿੱਚ ਸਟਾਕ ਜਾਰੀ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਨਹੀਂ ਤਾਂ ਖਰੀਦਦਾਰੀ ਕਾਰਟ ਬਣ ਜਾਂਦੀ ਹੈ ਇੱਕ ਮਕਾਨ ਮਾਲਕ। ਸ਼ੌਪੀਫਾਈ ਦੀ ਪੋਸਟ ਉਸ ਕਲੀਨਅੱਪ ਐਲਗੋਰਿਦਮ ਨੂੰ ਅਨਿਰਧਾਰਤ ਛੱਡ ਦਿੰਦੀ ਹੈ, ਇਸ ਲਈ ਇਹ ਡਾਇਗ੍ਰਾਮ ਜੀਵਨ ਚੱਕਰ ਦੀ ਲੋੜ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। ਇੱਥੇ ਫੜੋ।

### SKIP LOCKED ਕੀ ਛੱਡਦਾ ਹੈ?

2:14 ਲਾਕ ਕੀਤਾ ਛੱਡੋ ਲਾਕ ਕੀਤੀਆਂ ਕਤਾਰਾਂ ਨੂੰ ਛੱਡ ਦਿੰਦਾ ਹੈ, ਇਸ ਲਈ ਮੈਨੂਅਲ ਇਸਦੇ ਨਤੀਜੇ ਨੂੰ ਇੱਕ ਅਸੰਗਤ ਕਹਿੰਦਾ ਹੈ ਦ੍ਰਿਸ਼। ਇਹ ਨਾ ਤਾਂ ਇੱਕ ਸੰਪੂਰਨ ਸਟਾਕ ਗਿਣਤੀ ਅਤੇ ਨਾ ਹੀ ਨਿਰਪੱਖ ਵਾਰੀ-ਵਾਰੀ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਉਪਲਬਧਤਾ ਦਾ ਫੈਸਲਾ ਅਤੇ ਰੀਪਲੇਨਿਸ਼ਮੈਂਟ ਨਿਯਮਾਂ ਨੂੰ ਇਸਦੇ ਆਲੇ ਦੁਆਲੇ ਰੱਖੋ।

### ਅਸਲੀ ਸੀਲਿੰਗ ਕਿੱਥੇ ਸੀ?

2:26 ਅਤੇ ਉਹ ਸੀਲਿੰਗ? ਹੋਰ ਚੈਕਆਉਟ ਕੋਡ ਡਾਟਾਬੇਸ ਕੁਨੈਕਸ਼ਨਾਂ ਨੂੰ ਬਹੁਤ ਲੰਬੇ ਸਮੇਂ ਤੱਕ ਰੱਖ ਰਿਹਾ ਸੀ। ਸ਼ੌਪੀਫਾਈ ਨੇ ਕਾਲ ਕਰਨ ਵਾਲਿਆਂ ਨੂੰ ਟੈਗ ਕੀਤਾ ਅਤੇ ਕੁਨੈਕਸ਼ਨ ਹੋਲਡ ਸਮੇਂ ਨੂੰ ਮਾਪਿਆ, ਫਿਰ ਚੈਕਆਉਟ ਮਾਰਗ ਨੂੰ ਸਾਫ਼ ਕੀਤਾ ਅਤੇ ਥ੍ਰੈਡ ਸਮਕਾਲੀਤਾ ਨੂੰ ਦੁਬਾਰਾ ਵੇਖਿਆ। ਤੇਜ਼ ਸਵਾਲ ਅਜੇ ਵੀ ਸਵਾਲ ਦੇ ਬਾਹਰ ਕਤਾਰ ਵਿੱਚ ਲੱਗ ਸਕਦੇ ਹਨ।

### ਮੈਂ ਇਸ ਡਿਜ਼ਾਈਨ ਨੂੰ ਕਿਉਂ ਭੇਜਾਂਗਾ?

2:38 ਉਨ੍ਹਾਂ ਨੇ ਰੇਡਿਸ ਅਧਿਕਾਰਤ ਦੇ ਨਾਲ ਦੋਵਾਂ ਪ੍ਰਣਾਲੀਆਂ ਨੂੰ ਸ਼ੈਡੋ-ਰਾਈਟ ਕੀਤਾ, ਨਤੀਜਿਆਂ ਦੀ ਤੁਲਨਾ ਕੀਤੀ, ਫਿਰ ਕਿੱਲ ਸਵਿੱਚ ਨਾਲ ਹੌਲੀ-ਹੌਲੀ ਸਵਿੱਚ ਕੀਤਾ। ਮੇਰਾ ਫੈਸਲਾ ਹੈ ਇਸਨੂੰ ਭੇਜੋ। ਮੈਂ ਸਾਂਝੇ ਟ੍ਰਾਂਜੈਕਸ਼ਨ ਦੀ ਸੀਮਾ ਅਤੇ ਉਸ ਰੋਲਬੈਕਯੋਗ ਰੋਲਆਉਟ ਨੂੰ ਭੇਜਾਂਗਾ, ਪੂਰੇ ਚੈਕਆਉਟ ਮਾਰਗ ਨੂੰ ਇੰਸਟ੍ਰੂਮੈਂਟ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਸ ਬਾਰੇ ਕੋਈ ਸਵਾਲ ਹੈ? ਇਸਨੂੰ ਟਿੱਪਣੀਆਂ ਵਿੱਚ ਪਾਓ। ਅਤੇ ਅੱਜ ਲਈ ਇਹ ਫਰਕ ਹੈ।

2:54 ਮੈਂ ਐਕਸਰਿਸੀ ਤੋਂ ਨਿਕੋ ਹਾਂ। ਜ਼ਿੰਮੇਵਾਰੀ ਨਾਲ ਮਿਲਾਓ।

## ਸਰੋਤ

- [We replaced Redis with MySQL for inventory reservations—and it scaled](https://shopify.engineering/scaling-inventory-reservations) — Shopify Engineering — Emilie Noel
- [Simplified reservation SQL embedded in Shopify's article](https://gist.github.com/CourtneySymons/cb5ecbe86331047aae166d5b1f1d555c) — Shopify Engineering / CourtneySymons on GitHub Gist
- [MySQL 8.0 — Locking Reads](https://dev.mysql.com/doc/refman/8.0/en/innodb-locking-reads.html) — Oracle / MySQL Reference Manual
- [MySQL 8.0 — Transaction Isolation Levels](https://dev.mysql.com/doc/refman/8.0/en/innodb-transaction-isolation-levels.html) — Oracle / MySQL Reference Manual
- [What Is Shopify and How Does It Work?](https://www.shopify.com/blog/what-is-shopify) — Shopify
- [Redis quick starts](https://redis.io/docs/latest/develop/get-started/) — Redis documentation
- [What is MySQL?](https://dev.mysql.com/doc/refman/8.0/en/what-is-mysql.html) — Oracle / MySQL Reference Manual
