Submit Search
Upload
メッチャ役に立つauto_incrementの話
•
Download as KEY, PDF
•
3 likes
•
7,280 views
株式会社シャーロック
Follow
2012/06/27 MySQL Casual Talks @gumi福岡 #mysqlcf
Read less
Read more
Report
Share
Report
Share
1 of 32
Download now
Recommended
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
Kentaro Yoshida
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Platform - Japan
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
T. Suwa
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Yahoo!デベロッパーネットワーク
トランザクションの設計と進化
トランザクションの設計と進化
Kumazaki Hiroki
Recommended
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
Kentaro Yoshida
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Platform - Japan
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
T. Suwa
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Yahoo!デベロッパーネットワーク
トランザクションの設計と進化
トランザクションの設計と進化
Kumazaki Hiroki
Lockfree Queue
Lockfree Queue
Kumazaki Hiroki
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
Twitterのsnowflakeについて
Twitterのsnowflakeについて
moai kids
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
DNS再入門
DNS再入門
Takashi Takizawa
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
Kibanaでsysstatを可視化する
Kibanaでsysstatを可視化する
Kensuke Maeda
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
冬のLock free祭り safe
冬のLock free祭り safe
Kumazaki Hiroki
1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門
NVIDIA Japan
UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編
hdais
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
Shuyo Nakatani
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
私がMySQLを始めた理由
私がMySQLを始めた理由
yoyamasaki
カジュアルにバックアップ - MySQL Casual Talks 福岡
カジュアルにバックアップ - MySQL Casual Talks 福岡
Aya Komuro
More Related Content
What's hot
Lockfree Queue
Lockfree Queue
Kumazaki Hiroki
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
Twitterのsnowflakeについて
Twitterのsnowflakeについて
moai kids
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
DNS再入門
DNS再入門
Takashi Takizawa
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
Kibanaでsysstatを可視化する
Kibanaでsysstatを可視化する
Kensuke Maeda
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
冬のLock free祭り safe
冬のLock free祭り safe
Kumazaki Hiroki
1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門
NVIDIA Japan
UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編
hdais
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
Shuyo Nakatani
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
What's hot
(20)
Lockfree Queue
Lockfree Queue
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
Twitterのsnowflakeについて
Twitterのsnowflakeについて
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
DNS再入門
DNS再入門
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Kibanaでsysstatを可視化する
Kibanaでsysstatを可視化する
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Redisの特徴と活用方法について
Redisの特徴と活用方法について
冬のLock free祭り safe
冬のLock free祭り safe
1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門
UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編
メタプログラミングって何だろう
メタプログラミングって何だろう
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
Viewers also liked
私がMySQLを始めた理由
私がMySQLを始めた理由
yoyamasaki
カジュアルにバックアップ - MySQL Casual Talks 福岡
カジュアルにバックアップ - MySQL Casual Talks 福岡
Aya Komuro
My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1
Makoto Haruyama
Mysql casial01
Mysql casial01
matsuo kenji
MySQL de NoSQL Fukuoka
MySQL de NoSQL Fukuoka
Ryusuke Kajiyama
MySQL for Excelの紹介
MySQL for Excelの紹介
yoyamasaki
カジュアルにギャップキーロックとネクストキーロック
カジュアルにギャップキーロックとネクストキーロック
株式会社シャーロック
MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2
学 松崎
Mysql casual fukuoa_vlo_2
Mysql casual fukuoa_vlo_2
Makoto Haruyama
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
ichirin2501
Blazing Performance with Flame Graphs
Blazing Performance with Flame Graphs
Brendan Gregg
DevOps Practices:Configuration as Code
DevOps Practices:Configuration as Code
Doug Seven
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
Justin Ryan
深い親子関係のテーブル設計
深い親子関係のテーブル設計
琢磨 三浦
DB技術[実践]入門を読んだ
DB技術[実践]入門を読んだ
Yuuki Tan-nai
MySQL カジュアル 福岡 03
MySQL カジュアル 福岡 03
Aya Komuro
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Takeshi Komiya
ドキュメントの話、しませんか? #428rk01
ドキュメントの話、しませんか? #428rk01
Takeshi Komiya
外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話
ichirin2501
PayPal Big Data and MySQL Cluster
PayPal Big Data and MySQL Cluster
Mat Keep
Viewers also liked
(20)
私がMySQLを始めた理由
私がMySQLを始めた理由
カジュアルにバックアップ - MySQL Casual Talks 福岡
カジュアルにバックアップ - MySQL Casual Talks 福岡
My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1
Mysql casial01
Mysql casial01
MySQL de NoSQL Fukuoka
MySQL de NoSQL Fukuoka
MySQL for Excelの紹介
MySQL for Excelの紹介
カジュアルにギャップキーロックとネクストキーロック
カジュアルにギャップキーロックとネクストキーロック
MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2
Mysql casual fukuoa_vlo_2
Mysql casual fukuoa_vlo_2
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
Blazing Performance with Flame Graphs
Blazing Performance with Flame Graphs
DevOps Practices:Configuration as Code
DevOps Practices:Configuration as Code
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
深い親子関係のテーブル設計
深い親子関係のテーブル設計
DB技術[実践]入門を読んだ
DB技術[実践]入門を読んだ
MySQL カジュアル 福岡 03
MySQL カジュアル 福岡 03
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
ドキュメントの話、しませんか? #428rk01
ドキュメントの話、しませんか? #428rk01
外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話
PayPal Big Data and MySQL Cluster
PayPal Big Data and MySQL Cluster
Similar to メッチャ役に立つauto_incrementの話
http2 最速実装 v2
http2 最速実装 v2
Yoshihiro Iwanaga
DB tech showcase_tokyo2018_LOCONDO
DB tech showcase_tokyo2018_LOCONDO
Shinya Sugiyama
MySQL 入門的なはなし
MySQL 入門的なはなし
Yuya Takeyama
MySQL勉強会 クエリチューニング編
MySQL勉強会 クエリチューニング編
MicroAd, Inc.(Engineer)
ふくよかなモデル
ふくよかなモデル
yukaina
5 古雷my sql源碼與資料庫規範
5 古雷my sql源碼與資料庫規範
Ivan Tu
削除フラグのはなし
削除フラグのはなし
Shigetaka Yachi
MySQLとPostgreSQLにおける基本的なアカウント管理
MySQLとPostgreSQLにおける基本的なアカウント管理
Shinya Sugiyama
Locondo 20190215@ec tech_group
Locondo 20190215@ec tech_group
Shinya Sugiyama
Similar to メッチャ役に立つauto_incrementの話
(9)
http2 最速実装 v2
http2 最速実装 v2
DB tech showcase_tokyo2018_LOCONDO
DB tech showcase_tokyo2018_LOCONDO
MySQL 入門的なはなし
MySQL 入門的なはなし
MySQL勉強会 クエリチューニング編
MySQL勉強会 クエリチューニング編
ふくよかなモデル
ふくよかなモデル
5 古雷my sql源碼與資料庫規範
5 古雷my sql源碼與資料庫規範
削除フラグのはなし
削除フラグのはなし
MySQLとPostgreSQLにおける基本的なアカウント管理
MySQLとPostgreSQLにおける基本的なアカウント管理
Locondo 20190215@ec tech_group
Locondo 20190215@ec tech_group
メッチャ役に立つauto_incrementの話
1.
メッチャ役に立つ auto_incrementの話
@kitakoh 2012
2.
自己紹介 @kitakoh(放置中…) 大分から来ました パン食べるパン よろしくお願いします!
3.
auto_increment 通し番号を自動で振ってくれる機能
4.
user_id(auto_increment), user_name(char 10) だけのテーブルで実験
5.
普通にINSERT INSERT INTO tbl
(user_name) VALUES (‘user01’), (‘user02’), (‘user03’);
6.
普通にINSERT +---------+-----------+ |
user_id | user_name | +---------+-----------+ | 1 | user01 | | 2 | user02 | | 3 | user03 | +---------+-----------+ 3 rows in set (0.00 sec)
7.
user_id=2をDELETE
+---------+-----------+ | user_id | user_name | +---------+-----------+ | 1 | user01 | | ! 2 | user02 | | 3 | user03 | +---------+-----------+ 3 rows in set (0.00 sec)
8.
この状態で新規行をINSERT
+---------+-----------+ | user_id | user_name | +---------+-----------+ | 1 | user01 | | 3 | user03 | +---------+-----------+ 2 rows in set (0.00 sec)
9.
最後に追加された +---------+-----------+ |
user_id | user_name | +---------+-----------+ | 1 | user01 | | 3 | user03 | | ! 4 | userXX | +---------+-----------+ 3 rows in set (0.00 sec)
10.
最後の行をDELETEしてINSERTすると?
+---------+-----------+ | user_id | user_name | +---------+-----------+ | 1 | user01 | | 3 | user03 | | ! 4 | userXX | +---------+-----------+ 3 rows in set (0.00 sec)
11.
最後に追加された +---------+-----------+ |
user_id | user_name | +---------+-----------+ | 1 | user01 | | 3 | user03 | | ! 5 | userYY | +---------+-----------+ 3 rows in set (0.00 sec)
12.
auto_incrementで振られ るシーケンスは再利用され
ない
13.
user_idを指定してみる INSERT INTO tbl
(user_id, user_name) VALUES (10, ‘user10’);
14.
ここに新規行をINSERT +---------+-----------+
| user_id | user_name | +---------+-----------+ | 1 | user01 | | 3 | user03 | | 4 | userXX | | 5 | userYY | | 10 | user10 | +---------+-----------+
15.
最後に追加された +---------+-----------+ | user_id |
user_name | +---------+-----------+ | 1 | user01 | | 3 | user03 | | 4 | userXX | | 5 | userYY | | 10 | user10 | | ! 11 | userZZ | +---------+-----------+
16.
歯抜けのuser_idを指定 INSERT INTO tbl
(user_id, user_name) VALUES (2, ‘user2’);
17.
指定場所に追加される +---------+-----------+ |
user_id | user_name | +---------+-----------+ | 1 | user01 | | ! 2 | user02 | | 3 | user03 | | 4 | userXX | | 5 | userYY | | 10 | user10 | | 11 | userZZ |
18.
シーケンスは基本的に再利 用されないが、値を指定す れば再利用可能
19.
全行DELETEするとどうなる? (シーケンス11まで振られている状態で) DELETE FROM tbl; INSERT
INTO tbl(user_name) VALUES(‘userXX’);
20.
最後に追加される +---------+-----------+ |
user_id | user_name | +---------+-----------+ | 12 | userXX | +---------+-----------+ 1 rows in set (0.00 sec)
21.
テーブルをTRUNCATEするとどうなる? (シーケンスが12まで振られてる状態で) TRUNCATE TABLE tbl; INSERT
INTO tbl(user_name)VALUES(‘userXX’);
22.
シーケンスが巻き戻った +---------+-----------+
| user_id | user_name | +---------+-----------+ | 1 | userXX | +---------+-----------+ 1 rows in set (0.00 sec) ※MySQL5.5
23.
DELETEでは巻き戻らないが、 TRUNCATEだと巻き戻る
24.
user_idが最大値の状態でINSERT INSERT INTO tbl(user_id,
user_name) VALUES(127, ‘userXX’); +---------+-----------+ | user_id | user_name | +---------+-----------+ | 127 | userXX | +---------+-----------+ ↑TINYINT(SIGNED)
25.
ERRORになる ERROR 1062 (23000):
Duplicate entry '127' for key 'PRIMARY'
26.
シーケンス値は、ALTER文で指定できる ALTER TABLE tbl
auto_increment = 10; 10に指定しているので、新規行INSERTすると11から 入る
27.
今のシーケンス値を知る方法 SHOW
CREATE TABLE tbl; +-------+------------------------------------------------+ | Table | Create Table | +-------+------------------------------------------------+ | tbl | CREATE TABLE `tbl` ( | | | `user_id` tinyint(4) NOT NULL AUTO_INCREMENT, | | | `user_name` char(10) DEFAULT NULL, | | | PRIMARY KEY (`user_id`) | | | ) ENGINE=InnoDB AUTO_INCREMENT=10 | +-------+------------------------------------------------+
28.
複合キーでauto_increment CREATE TABLE tbl(
dept_id TINYINT, ←部門IDを追加 user_id TINYINT AUTO_INCREMENT, user_name CHAR(10), PRIMARY KEY(dept_id, user_id) )ENGINE=MyISAM;
29.
複合キーでauto_increment insert into tbl(dept_id,
user_name) values(1, 'aa'); insert into tbl(dept_id, user_name) values(1, 'bb'); insert into tbl(dept_id, user_name) values(1, 'cc'); insert into tbl(dept_id, user_name) values(2, 'aa'); insert into tbl(dept_id, user_name) values(2, 'bb'); insert into tbl(dept_id, user_name) values(2, 'cc'); 1と2の部門に3件ずつINSERTしてみる
30.
複合キーでauto_increment +---------+---------+-----------+ |
dept_id | user_id | user_name | +---------+---------+-----------+ | 1 | 1 | aa | | 1 | 2 | bb | | 1 | 3 | cc | | 2 | 1 | aa | | 2 | 2 | bb | | 2 | 3 | cc | +---------+---------+-----------+ 6 rows in set (0.01 sec)
31.
複合キーでauto_increment dept_idとuser_idで重 複しないように、自動的に
user_idを連番で振ってく れます。(MyISAM限定)
32.
メッチャ役に立つauto_incrementの話
完 ご清聴下さった皆様、 場所をご提供下さいましたgumi様、 ありがとうございました
Editor's Notes
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Download now