#isucon チーム「ウー馬場ーイー222」でISUCON13本選に参加し30位になりました

今年は予選なしで全員が一発本選なので、昨年に引き続き本選に参加です。

というわけで、今年も例年通り @matsuu@ishikawa84g と参加しました。

チーム名が「シン・ウー馬場ーイー2」から「ウー馬場ーイー222」になり新たなスタートを切りました。 222はチーム番号です。縁起が良いですね。

今年もとても楽しめました。運営のみなさんありがとうございました。

結果はまだわからないけど、最終スコアは 49,344 といまひとつ。

ワンチャン30位以内にならないかなーと希望的観測。 →(繰り上げがあり)30位でした!ギリで上位粗品圏内!


ISUCON13 受賞チームおよび全チームスコア : ISUCON公式Blog


役割分担はこれまたいつも通りこんな感じです。

  • @ishikawa84g サイトやレギュレーションやコードやログやDiscordを見る情報官
  • @matsuu バリバリ実装する前衛
  • @netmarkjp 司令塔

ちなみに写真はソラマチにある蟻月のモツ鍋(ランチ)です。

今年はハナからGoで

毎年「今年こそRust」というもののなかなか踏み切れず。特に状況が改善したりしなかったので、今年はRustはハナから諦めてGoでやりました。

実装レベルの詳しいことは@matsuuが書いてくれると思うので、自分は別の観点で。

去年はDBを分割する決断ができず本選の結果が奮わなかったので、今年はDBを分割するか判断できるようツールを用意してみました。

netmarkjp/go-discover-sql-caller

GitHub
Contribute to netmarkjp/go-discover-sql-caller development by creating an account on GitHub.

コードの中からSQLを抽出して、どこでそれを呼び出しているか一覧にするツールです。 クエリー自体のhash値を併記しているので、DBのスローログで発見されたクエリーがどこにあるか発見しやすくなります。

関数呼び出しを追跡しているので、SQLを呼び出している関数の呼び出し元を辿ることができます(-notrace をつければ定義箇所だけ)。

デフォルトはtextフォーマットだけど、tsvやjsonにもできます。 標準出力に出すから | vim -R - -c "set ft=sql" とかでSQLを見るのも楽です。

スロークエリーログで問題のクエリーを発見→ツールで呼び出し元を発見→どう対応するか決める という流れで活用できます。

だがしかし

...これを作って意気揚々と本番に臨んだものの、入力に1ファイルしか想定しておらず、今回は使えませんでした。

悔しかったので本選終了後にいじったところ、30分くらいで複数ファイルに対応できました。 AST触るのは始めてだったけど、優秀なChatGPTのおかげでなんとか動いているようです。

というわけで、来年はがんばろう。。。

なお終了後に改修した最新版だとこんな感じで使えます。 これは初期コードに適用してみたところ。

SELECT * FROM livestreams WHERE id = ? (Checksum B83ADB51427F2D680B7655A83409ABA0)が複数箇所で定義されているのがわかります。 あと fillLivecommentResponsefillLivecommentResponse がいろいろ呼び出されていることがわかります。

 $(go env GOPATH)/bin/go-discover-sql-caller -dir webapp/go
Location                                                                                   Checksum                         SQL
getLivecommentsHandler:87                                                                  1248963BB76FF70D32F54FE5A47D1DFD SELECT * FROM livecomments WHERE livestream_id = ? ORDER BY created_at DESC
getLivecommentsHandler:107,fillLivecommentResponse:436                                     B83ADB51427F2D680B7655A83409ABA0 SELECT * FROM livestreams WHERE id = ?
getNgwords:146                                                                             925017AE676DBA305B883A3F4E668C42 SELECT * FROM ng_words WHERE user_id = ? AND livestream_id = ? ORDER BY created_at DESC
postLivecommentHandler:191                                                                 B83ADB51427F2D680B7655A83409ABA0 SELECT * FROM livestreams WHERE id = ?
postLivecommentHandler:201                                                                 6BFB2BE3E545ED01A56DD8BD604799F5 SELECT id, user_id, livestream_id, word FROM ng_words WHERE user_id = ? AND livestream_id = ?
postLivecommentHandler:233                                                                 200A4AF4256FE1C25C07A7EE374E7562 INSERT INTO livecomments (user_id, livestream_id, comment, tip, created_at) VALUES (:user_id, :livestream_id, :comment, :tip, :created_at)
postLivecommentHandler:244,fillLivecommentResponse:436                                     B83ADB51427F2D680B7655A83409ABA0 SELECT * FROM livestreams WHERE id = ?
reportLivecommentHandler:285                                                               B83ADB51427F2D680B7655A83409ABA0 SELECT * FROM livestreams WHERE id = ?
reportLivecommentHandler:294                                                               13344416982E8C400C42E6BB74FC7459 SELECT * FROM livecomments WHERE id = ?
reportLivecommentHandler:309                                                               832203E623674A2EB51B7D6ED64865B8 INSERT INTO livecomment_reports(user_id, livestream_id, livecomment_id, created_at) VALUES (:user_id, :livestream_id, :livecomment_id, :created_at)
reportLivecommentHandler:319,fillLivecommentReportResponse:467                             13344416982E8C400C42E6BB74FC7459 SELECT * FROM livecomments WHERE id = ?
reportLivecommentHandler:319,fillLivecommentReportResponse:470,fillLivecommentResponse:436 B83ADB51427F2D680B7655A83409ABA0 SELECT * FROM livestreams WHERE id = ?
moderateHandler:362                                                                        32C65D4958BEA4CEA73D3C821590F1F4 SELECT * FROM livestreams WHERE id = ? AND user_id = ?
moderateHandler:369                                                                        8F83A27BBCDF7A390C591A281988D737 INSERT INTO ng_words(user_id, livestream_id, word, created_at) VALUES (:user_id, :livestream_id, :word, :created_at)
moderateHandler:385                                                                        46C3FEA6D24AAE22C3291EFD50FABAEF SELECT * FROM ng_words WHERE livestream_id = ?
moderateHandler:393                                                                        4BFAE7029DE99922D8C20681925FEE93 SELECT * FROM livecomments
fillLivecommentResponse:427                                                                F15E5E09C27C92BE6ED2B586D171D68A SELECT * FROM users WHERE id = ?
fillLivecommentResponse:436                                                                B83ADB51427F2D680B7655A83409ABA0 SELECT * FROM livestreams WHERE id = ?
fillLivecommentReportResponse:458                                                          F15E5E09C27C92BE6ED2B586D171D68A SELECT * FROM users WHERE id = ?
fillLivecommentReportResponse:467                                                          13344416982E8C400C42E6BB74FC7459 SELECT * FROM livecomments WHERE id = ?
fillLivecommentReportResponse:470,fillLivecommentResponse:436                              B83ADB51427F2D680B7655A83409ABA0 SELECT * FROM livestreams WHERE id = ?
reserveLivestreamHandler:109                                                               DCE9DBBA4B54B6C56ABB6CE74ED20DCB SELECT * FROM reservation_slots WHERE start_at >= ? AND end_at <= ? FOR UPDATE
reserveLivestreamHandler:115                                                               12686C37E2C015F0AF48846765407261 SELECT slot FROM reservation_slots WHERE start_at = ? AND end_at = ?
reserveLivestreamHandler:136                                                               D08EFE41A6268EC2B8F6D66D92E2FA72 UPDATE reservation_slots SET slot = slot - 1 WHERE start_at >= ? AND end_at <= ?
reserveLivestreamHandler:140                                                               9FA89706E7DCD3BA85C1D562E53D16BA INSERT INTO livestreams (user_id, title, description, playlist_url, thumbnail_url, start_at, end_at) VALUES(:user_id, :title, :description, :playlist_url, :thumbnail_url, :start_at, :end_at)
reserveLivestreamHandler:153                                                               50C1C55EB78A413CCE26907DE54C1D4A INSERT INTO livestream_tags (livestream_id, tag_id) VALUES (:livestream_id, :tag_id)
reserveLivestreamHandler:161,fillLivestreamResponse:505                                    9B864E0B1A3056BF722F3339FF6C2184 SELECT * FROM tags WHERE id = ?
searchLivestreamsHandler:187                                                               476B644BB1AF1566211E70D1AB6ABAE6 SELECT id FROM tags WHERE name = ?
searchLivestreamsHandler:191                                                               52E5A1338E9AB141B6AAE7AD1BFA2353 SELECT * FROM livestream_tags WHERE tag_id IN (?) ORDER BY livestream_id DESC
searchLivestreamsHandler:202                                                               B83ADB51427F2D680B7655A83409ABA0 SELECT * FROM livestreams WHERE id = ?
searchLivestreamsHandler:210                                                               D0D078D6ECA6395A834EA7CE8410B11D SELECT * FROM livestreams ORDER BY id DESC
searchLivestreamsHandler:226,fillLivestreamResponse:505                                    9B864E0B1A3056BF722F3339FF6C2184 SELECT * FROM tags WHERE id = ?
getMyLivestreamsHandler:258                                                                5D09930E7A023E7D2E21C43DDFC969AD SELECT * FROM livestreams WHERE user_id = ?
getMyLivestreamsHandler:263,fillLivestreamResponse:505                                     9B864E0B1A3056BF722F3339FF6C2184 SELECT * FROM tags WHERE id = ?
getUserLivestreamsHandler:292                                                              9B32CBE99E202A6003AE79E39EB35BF9 SELECT * FROM users WHERE name = ?
getUserLivestreamsHandler:301                                                              5D09930E7A023E7D2E21C43DDFC969AD SELECT * FROM livestreams WHERE user_id = ?
getUserLivestreamsHandler:306,fillLivestreamResponse:505                                   9B864E0B1A3056BF722F3339FF6C2184 SELECT * FROM tags WHERE id = ?
enterLivestreamHandler:350                                                                 F3EA3787950DBE058F2B7805E2D206AF INSERT INTO livestream_viewers_history (user_id, livestream_id, created_at) VALUES(:user_id, :livestream_id, :created_at)
exitLivestreamHandler:384                                                                  2899F5B85F260C474FC8150B2763FE79 DELETE FROM livestream_viewers_history WHERE user_id = ? AND livestream_id = ?
getLivestreamHandler:414                                                                   B83ADB51427F2D680B7655A83409ABA0 SELECT * FROM livestreams WHERE id = ?
getLivestreamHandler:422,fillLivestreamResponse:505                                        9B864E0B1A3056BF722F3339FF6C2184 SELECT * FROM tags WHERE id = ?
getLivecommentReportsHandler:453                                                           B83ADB51427F2D680B7655A83409ABA0 SELECT * FROM livestreams WHERE id = ?
getLivecommentReportsHandler:467                                                           9B0CD3249B26D7D03C1CC61FAE789322 SELECT * FROM livecomment_reports WHERE livestream_id = ?
fillLivestreamResponse:489                                                                 F15E5E09C27C92BE6ED2B586D171D68A SELECT * FROM users WHERE id = ?
fillLivestreamResponse:498                                                                 AC21429E0B8371DE65207B7DDBC2F610 SELECT * FROM livestream_tags WHERE livestream_id = ?
fillLivestreamResponse:505                                                                 9B864E0B1A3056BF722F3339FF6C2184 SELECT * FROM tags WHERE id = ?
GetPaymentResult:23                                                                        EFCE58B11397A24A284FD4E77D50FA71 SELECT IFNULL(SUM(tip), 0) FROM livecomments
getReactionsHandler:55                                                                     8A6A329DAE793CF5782CCB492162353D SELECT * FROM reactions WHERE livestream_id = ? ORDER BY created_at DESC
getReactionsHandler:71,fillReactionResponse:155                                            B83ADB51427F2D680B7655A83409ABA0 SELECT * FROM livestreams WHERE id = ?
postReactionHandler:121                                                                    FB492CB0CDFF6CCA5EBD6A35D2881937 INSERT INTO reactions (user_id, livestream_id, emoji_name, created_at) VALUES (:user_id, :livestream_id, :emoji_name, :created_at)
postReactionHandler:132,fillReactionResponse:155                                           B83ADB51427F2D680B7655A83409ABA0 SELECT * FROM livestreams WHERE id = ?
fillReactionResponse:146                                                                   F15E5E09C27C92BE6ED2B586D171D68A SELECT * FROM users WHERE id = ?
fillReactionResponse:155                                                                   B83ADB51427F2D680B7655A83409ABA0 SELECT * FROM livestreams WHERE id = ?
getUserStatisticsHandler:81                                                                9B32CBE99E202A6003AE79E39EB35BF9 SELECT * FROM users WHERE name = ?
getUserStatisticsHandler:91                                                                A4FC5C1E8C543E92A123211BCE782272 SELECT * FROM users
getUserStatisticsHandler:136                                                               7EED49F48F65B1CE1EBA0DF3B4689B0C SELECT COUNT(*) FROM users u
    INNER JOIN livestreams l ON l.user_id = u.id
    INNER JOIN reactions r ON r.livestream_id = l.id
    WHERE u.name = ?

getUserStatisticsHandler:149             5D09930E7A023E7D2E21C43DDFC969AD SELECT * FROM livestreams WHERE user_id = ?
getUserStatisticsHandler:155             1CE09EA13753F1EB222940DA38ADE052 SELECT * FROM livecomments WHERE livestream_id = ?
getUserStatisticsHandler:169             38671CBA1BF1FCDB31E44F3406FBB6B0 SELECT COUNT(*) FROM livestream_viewers_history WHERE livestream_id = ?
getLivestreamStatisticsHandler:222       B83ADB51427F2D680B7655A83409ABA0 SELECT * FROM livestreams WHERE id = ?
getLivestreamStatisticsHandler:231       4EDBD6693B37084DE44B9792CC8F50CF SELECT * FROM livestreams
getLivestreamStatisticsHandler:239       2DAE44F5C7A4EC19DE4CFD50FBD95B1C SELECT COUNT(*) FROM livestreams l INNER JOIN reactions r ON l.id = r.livestream_id WHERE l.id = ?
getLivestreamStatisticsHandler:244       CD40B03AA401C6C016EAC8A59B809B8A SELECT IFNULL(SUM(l2.tip), 0) FROM livestreams l INNER JOIN livecomments l2 ON l.id = l2.livestream_id WHERE l.id = ?
getLivestreamStatisticsHandler:267       01EEB391152FB82F8F0B90C8DD3CB86E SELECT COUNT(*) FROM livestreams l INNER JOIN livestream_viewers_history h ON h.livestream_id = l.id WHERE l.id = ?
getLivestreamStatisticsHandler:273       1D48A19D9382A9216572F4AD9969B46A SELECT IFNULL(MAX(tip), 0) FROM livestreams l INNER JOIN livecomments l2 ON l2.livestream_id = l.id WHERE l.id = ?
getLivestreamStatisticsHandler:279       EF50C1C392721A2BED13592260D66AB2 SELECT COUNT(*) FROM livestreams l INNER JOIN reactions r ON r.livestream_id = l.id WHERE l.id = ?
getLivestreamStatisticsHandler:285       F4A4D06FA91756DBA974B3306D4A149C SELECT COUNT(*) FROM livestreams l INNER JOIN livecomment_reports r ON r.livestream_id = l.id WHERE l.id = ?
getTagHandler:35                         EA674DF618E83C0CEC75A0B1ABD8F6D1 SELECT * FROM tags
getStreamerThemeHandler:75               BDEDFE7FF2B14B3381FAC7B6A6206D6C SELECT id FROM users WHERE name = ?
getStreamerThemeHandler:84               91D73A9BE30B4E63223B63F1942BBE93 SELECT * FROM themes WHERE user_id = ?
getIconHandler:100                       9B32CBE99E202A6003AE79E39EB35BF9 SELECT * FROM users WHERE name = ?
getIconHandler:108                       6D0A57129D1919DBC0CFDEFDE87411E9 SELECT image FROM icons WHERE user_id = ?
postIconHandler:143                      4F65E74889F8A2FB9A3CFAEBB0003FEE DELETE FROM icons WHERE user_id = ?
postIconHandler:147                      D196E94DA0044B0BF4FA0DBA42EDFFD6 INSERT INTO icons (user_id, image) VALUES (?, ?)
getMeHandler:186                         F15E5E09C27C92BE6ED2B586D171D68A SELECT * FROM users WHERE id = ?
getMeHandler:194,fillUserResponse:408    6D0A57129D1919DBC0CFDEFDE87411E9 SELECT image FROM icons WHERE user_id = ?
registerHandler:239                      ED0699EE4C7D067DDDEB03A61C8F654D INSERT INTO users (name, display_name, description, password) VALUES(:name, :display_name, :description, :password)
registerHandler:255                      48DF405F724A7532D3B523588AFDE199 INSERT INTO themes (user_id, dark_mode) VALUES(:user_id, :dark_mode)
registerHandler:263,fillUserResponse:408 6D0A57129D1919DBC0CFDEFDE87411E9 SELECT image FROM icons WHERE user_id = ?
loginHandler:294                         9B32CBE99E202A6003AE79E39EB35BF9 SELECT * FROM users WHERE name = ?
getUserHandler:358                       9B32CBE99E202A6003AE79E39EB35BF9 SELECT * FROM users WHERE name = ?
getUserHandler:365,fillUserResponse:408  6D0A57129D1919DBC0CFDEFDE87411E9 SELECT image FROM icons WHERE user_id = ?
fillUserResponse:403                     91D73A9BE30B4E63223B63F1942BBE93 SELECT * FROM themes WHERE user_id = ?
fillUserResponse:408                     6D0A57129D1919DBC0CFDEFDE87411E9 SELECT image FROM icons WHERE user_id = ?

-notrace だとこんな感じ。

 $(go env GOPATH)/bin/go-discover-sql-caller -dir webapp/go -notrace
Location                          Checksum                         SQL
getLivecommentsHandler:87         1248963BB76FF70D32F54FE5A47D1DFD SELECT * FROM livecomments WHERE livestream_id = ? ORDER BY created_at DESC
getNgwords:146                    925017AE676DBA305B883A3F4E668C42 SELECT * FROM ng_words WHERE user_id = ? AND livestream_id = ? ORDER BY created_at DESC
postLivecommentHandler:191        B83ADB51427F2D680B7655A83409ABA0 SELECT * FROM livestreams WHERE id = ?
postLivecommentHandler:201        6BFB2BE3E545ED01A56DD8BD604799F5 SELECT id, user_id, livestream_id, word FROM ng_words WHERE user_id = ? AND livestream_id = ?
postLivecommentHandler:233        200A4AF4256FE1C25C07A7EE374E7562 INSERT INTO livecomments (user_id, livestream_id, comment, tip, created_at) VALUES (:user_id, :livestream_id, :comment, :tip, :created_at)
reportLivecommentHandler:285      B83ADB51427F2D680B7655A83409ABA0 SELECT * FROM livestreams WHERE id = ?
reportLivecommentHandler:294      13344416982E8C400C42E6BB74FC7459 SELECT * FROM livecomments WHERE id = ?
reportLivecommentHandler:309      832203E623674A2EB51B7D6ED64865B8 INSERT INTO livecomment_reports(user_id, livestream_id, livecomment_id, created_at) VALUES (:user_id, :livestream_id, :livecomment_id, :created_at)
moderateHandler:362               32C65D4958BEA4CEA73D3C821590F1F4 SELECT * FROM livestreams WHERE id = ? AND user_id = ?
moderateHandler:369               8F83A27BBCDF7A390C591A281988D737 INSERT INTO ng_words(user_id, livestream_id, word, created_at) VALUES (:user_id, :livestream_id, :word, :created_at)
moderateHandler:385               46C3FEA6D24AAE22C3291EFD50FABAEF SELECT * FROM ng_words WHERE livestream_id = ?
moderateHandler:393               4BFAE7029DE99922D8C20681925FEE93 SELECT * FROM livecomments
fillLivecommentResponse:427       F15E5E09C27C92BE6ED2B586D171D68A SELECT * FROM users WHERE id = ?
fillLivecommentResponse:436       B83ADB51427F2D680B7655A83409ABA0 SELECT * FROM livestreams WHERE id = ?
fillLivecommentReportResponse:458 F15E5E09C27C92BE6ED2B586D171D68A SELECT * FROM users WHERE id = ?
fillLivecommentReportResponse:467 13344416982E8C400C42E6BB74FC7459 SELECT * FROM livecomments WHERE id = ?
reserveLivestreamHandler:109      DCE9DBBA4B54B6C56ABB6CE74ED20DCB SELECT * FROM reservation_slots WHERE start_at >= ? AND end_at <= ? FOR UPDATE
reserveLivestreamHandler:115      12686C37E2C015F0AF48846765407261 SELECT slot FROM reservation_slots WHERE start_at = ? AND end_at = ?
reserveLivestreamHandler:136      D08EFE41A6268EC2B8F6D66D92E2FA72 UPDATE reservation_slots SET slot = slot - 1 WHERE start_at >= ? AND end_at <= ?
reserveLivestreamHandler:140      9FA89706E7DCD3BA85C1D562E53D16BA INSERT INTO livestreams (user_id, title, description, playlist_url, thumbnail_url, start_at, end_at) VALUES(:user_id, :title, :description, :playlist_url, :thumbnail_url, :start_at, :end_at)
reserveLivestreamHandler:153      50C1C55EB78A413CCE26907DE54C1D4A INSERT INTO livestream_tags (livestream_id, tag_id) VALUES (:livestream_id, :tag_id)
searchLivestreamsHandler:187      476B644BB1AF1566211E70D1AB6ABAE6 SELECT id FROM tags WHERE name = ?
searchLivestreamsHandler:191      52E5A1338E9AB141B6AAE7AD1BFA2353 SELECT * FROM livestream_tags WHERE tag_id IN (?) ORDER BY livestream_id DESC
searchLivestreamsHandler:202      B83ADB51427F2D680B7655A83409ABA0 SELECT * FROM livestreams WHERE id = ?
searchLivestreamsHandler:210      D0D078D6ECA6395A834EA7CE8410B11D SELECT * FROM livestreams ORDER BY id DESC
getMyLivestreamsHandler:258       5D09930E7A023E7D2E21C43DDFC969AD SELECT * FROM livestreams WHERE user_id = ?
getUserLivestreamsHandler:292     9B32CBE99E202A6003AE79E39EB35BF9 SELECT * FROM users WHERE name = ?
getUserLivestreamsHandler:301     5D09930E7A023E7D2E21C43DDFC969AD SELECT * FROM livestreams WHERE user_id = ?
enterLivestreamHandler:350        F3EA3787950DBE058F2B7805E2D206AF INSERT INTO livestream_viewers_history (user_id, livestream_id, created_at) VALUES(:user_id, :livestream_id, :created_at)
exitLivestreamHandler:384         2899F5B85F260C474FC8150B2763FE79 DELETE FROM livestream_viewers_history WHERE user_id = ? AND livestream_id = ?
getLivestreamHandler:414          B83ADB51427F2D680B7655A83409ABA0 SELECT * FROM livestreams WHERE id = ?
getLivecommentReportsHandler:453  B83ADB51427F2D680B7655A83409ABA0 SELECT * FROM livestreams WHERE id = ?
getLivecommentReportsHandler:467  9B0CD3249B26D7D03C1CC61FAE789322 SELECT * FROM livecomment_reports WHERE livestream_id = ?
fillLivestreamResponse:489        F15E5E09C27C92BE6ED2B586D171D68A SELECT * FROM users WHERE id = ?
fillLivestreamResponse:498        AC21429E0B8371DE65207B7DDBC2F610 SELECT * FROM livestream_tags WHERE livestream_id = ?
fillLivestreamResponse:505        9B864E0B1A3056BF722F3339FF6C2184 SELECT * FROM tags WHERE id = ?
GetPaymentResult:23               EFCE58B11397A24A284FD4E77D50FA71 SELECT IFNULL(SUM(tip), 0) FROM livecomments
getReactionsHandler:55            8A6A329DAE793CF5782CCB492162353D SELECT * FROM reactions WHERE livestream_id = ? ORDER BY created_at DESC
postReactionHandler:121           FB492CB0CDFF6CCA5EBD6A35D2881937 INSERT INTO reactions (user_id, livestream_id, emoji_name, created_at) VALUES (:user_id, :livestream_id, :emoji_name, :created_at)
fillReactionResponse:146          F15E5E09C27C92BE6ED2B586D171D68A SELECT * FROM users WHERE id = ?
fillReactionResponse:155          B83ADB51427F2D680B7655A83409ABA0 SELECT * FROM livestreams WHERE id = ?
getUserStatisticsHandler:81       9B32CBE99E202A6003AE79E39EB35BF9 SELECT * FROM users WHERE name = ?
getUserStatisticsHandler:91       A4FC5C1E8C543E92A123211BCE782272 SELECT * FROM users
getUserStatisticsHandler:136      7EED49F48F65B1CE1EBA0DF3B4689B0C SELECT COUNT(*) FROM users u
    INNER JOIN livestreams l ON l.user_id = u.id
    INNER JOIN reactions r ON r.livestream_id = l.id
    WHERE u.name = ?

getUserStatisticsHandler:149       5D09930E7A023E7D2E21C43DDFC969AD SELECT * FROM livestreams WHERE user_id = ?
getUserStatisticsHandler:155       1CE09EA13753F1EB222940DA38ADE052 SELECT * FROM livecomments WHERE livestream_id = ?
getUserStatisticsHandler:169       38671CBA1BF1FCDB31E44F3406FBB6B0 SELECT COUNT(*) FROM livestream_viewers_history WHERE livestream_id = ?
getLivestreamStatisticsHandler:222 B83ADB51427F2D680B7655A83409ABA0 SELECT * FROM livestreams WHERE id = ?
getLivestreamStatisticsHandler:231 4EDBD6693B37084DE44B9792CC8F50CF SELECT * FROM livestreams
getLivestreamStatisticsHandler:239 2DAE44F5C7A4EC19DE4CFD50FBD95B1C SELECT COUNT(*) FROM livestreams l INNER JOIN reactions r ON l.id = r.livestream_id WHERE l.id = ?
getLivestreamStatisticsHandler:244 CD40B03AA401C6C016EAC8A59B809B8A SELECT IFNULL(SUM(l2.tip), 0) FROM livestreams l INNER JOIN livecomments l2 ON l.id = l2.livestream_id WHERE l.id = ?
getLivestreamStatisticsHandler:267 01EEB391152FB82F8F0B90C8DD3CB86E SELECT COUNT(*) FROM livestreams l INNER JOIN livestream_viewers_history h ON h.livestream_id = l.id WHERE l.id = ?
getLivestreamStatisticsHandler:273 1D48A19D9382A9216572F4AD9969B46A SELECT IFNULL(MAX(tip), 0) FROM livestreams l INNER JOIN livecomments l2 ON l2.livestream_id = l.id WHERE l.id = ?
getLivestreamStatisticsHandler:279 EF50C1C392721A2BED13592260D66AB2 SELECT COUNT(*) FROM livestreams l INNER JOIN reactions r ON r.livestream_id = l.id WHERE l.id = ?
getLivestreamStatisticsHandler:285 F4A4D06FA91756DBA974B3306D4A149C SELECT COUNT(*) FROM livestreams l INNER JOIN livecomment_reports r ON r.livestream_id = l.id WHERE l.id = ?
getTagHandler:35                   EA674DF618E83C0CEC75A0B1ABD8F6D1 SELECT * FROM tags
getStreamerThemeHandler:75         BDEDFE7FF2B14B3381FAC7B6A6206D6C SELECT id FROM users WHERE name = ?
getStreamerThemeHandler:84         91D73A9BE30B4E63223B63F1942BBE93 SELECT * FROM themes WHERE user_id = ?
getIconHandler:100                 9B32CBE99E202A6003AE79E39EB35BF9 SELECT * FROM users WHERE name = ?
getIconHandler:108                 6D0A57129D1919DBC0CFDEFDE87411E9 SELECT image FROM icons WHERE user_id = ?
postIconHandler:143                4F65E74889F8A2FB9A3CFAEBB0003FEE DELETE FROM icons WHERE user_id = ?
postIconHandler:147                D196E94DA0044B0BF4FA0DBA42EDFFD6 INSERT INTO icons (user_id, image) VALUES (?, ?)
getMeHandler:186                   F15E5E09C27C92BE6ED2B586D171D68A SELECT * FROM users WHERE id = ?
registerHandler:239                ED0699EE4C7D067DDDEB03A61C8F654D INSERT INTO users (name, display_name, description, password) VALUES(:name, :display_name, :description, :password)
registerHandler:255                48DF405F724A7532D3B523588AFDE199 INSERT INTO themes (user_id, dark_mode) VALUES(:user_id, :dark_mode)
loginHandler:294                   9B32CBE99E202A6003AE79E39EB35BF9 SELECT * FROM users WHERE name = ?
getUserHandler:358                 9B32CBE99E202A6003AE79E39EB35BF9 SELECT * FROM users WHERE name = ?
fillUserResponse:403               91D73A9BE30B4E63223B63F1942BBE93 SELECT * FROM themes WHERE user_id = ?
fillUserResponse:408               6D0A57129D1919DBC0CFDEFDE87411E9 SELECT image FROM icons WHERE user_id = ?

わが軍のハイライト

ダッシュボードが閉まる17:00を挟んでスコアが2倍になりました。やったね!

来年はもっと着実に情報把握して判断できるマンになれるよう、またがんばります。

Event 

See also