Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【TiDB GAME DAY 2025】Shadowverse: Worlds Beyond ...

Avatar for Cygames Cygames PRO
June 25, 2025

【TiDB GAME DAY 2025】Shadowverse: Worlds Beyond にみる TiDB 活用術

2025/05/30 TiDB Game Day 2025

Avatar for Cygames

Cygames PRO

June 25, 2025
Tweet

More Decks by Cygames

Other Decks in Technology

Transcript

  1. 6/

  2. 29/72 BEGIN; SELECT value FROM user_items WHERE user_id=1 AND item_id=1;

    UPDATE user_items SET value=10 WHERE user_id=1; UPDATE user_items SET value=1+1 WHERE user_id=1 AND item_id=1; COMMIT;
  3. 30/72 BEGIN; SELECT * FROM users WHERE id=1 FOR UPDATE;

    SELECT value FROM user_items WHERE user_id=1 AND item_id=1; BEGIN; SELECT * FROM users WHERE id=1 FOR UPDATE; UPDATE user_items SET value=1+1 WHERE user_id=1 AND item_id=1; COMMIT;
  4. 32/72 BEGIN; UPDATE user_items SET value=10 WHERE user_id=1; SELECT *

    FROM users WHERE id=1; UPDATE user_items SET value=20 WHERE user_id=1; SELECT value FROM user_items WHERE user_id=1 AND item_id=1; COMMIT;
  5. 34/72 BEGIN; BEGIN; SELECT * FROM users WHERE id=1 FOR

    UPDATE; UPDATE user_items SET value=10 WHERE user_id=1; COMMIT; SELECT * FROM users WHERE id=1 FOR UPDATE; SELECT value FROM user_items WHERE user_id=1 AND item_id=1; UPDATE user_items SET value=1+1 WHERE user_id=1 AND item_id=1; COMMIT;
  6. 37/72 SELECT GET_LOCK('users:1', 60); BEGIN; SELECT GET_LOCK('users:1', 60); SELECT *

    FROM users WHERE id=1 FOR UPDATE; SELECT value FROM user_items WHERE user_id=1 AND item_id=1; UPDATE user_items SET value=1+1 WHERE user_id=1 AND item_id=1; COMMIT; SELECT RELEASE_LOCK('users:1');
  7. 39/72 BEGIN; BEGIN; SELECT * FROM users WHERE id=1 FOR

    UPDATE; UPDATE user_items SET value=10 WHERE user_id=1; COMMIT; SELECT * FROM users WHERE id=1 FOR UPDATE; SELECT value FROM user_items WHERE user_id=1 AND item_id=1 FOR UPDATE; UPDATE user_items SET value=10+1 WHERE user_id=1 AND item_id=1; COMMIT;
  8. 41/72 BEGIN; BEGIN; SELECT * FROM users WHERE id=1 FOR

    UPDATE; UPDATE user_items SET value=10 WHERE user_id=1; COMMIT; SELECT * FROM users WHERE id=1 FOR UPDATE; SELECT value FROM user_items WHERE user_id=1 AND item_id=1; UPDATE user_items SET value=10+1 WHERE user_id=1 AND item_id=1; COMMIT;
  9. 52/72 – UPDATE {table} SET value = 100; – DELETE

    FROM {table}; – INSERT INTO {table_new} SELECT * FROM {table_old};
  10. 53/72 BATCH ON id LIMIT 1000 DELETE FROM users; DELETE

    FROM users WHERE id BETWEEN 1 AND 1000; DELETE FROM users WHERE id BETWEEN 1001 AND 2000; ︙