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
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 32
Download now
Recommended
固定化か?最新化か?オプティマイザ統計の運用をもう一度考える。 -JPOUG Tech Talk Night #6-
固定化か?最新化か?オプティマイザ統計の運用をもう一度考える。 -JPOUG Tech Talk Night #6-
歩 柴田
今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7
yoku0825
hbstudy20100821 SpamAssassin
hbstudy20100821 SpamAssassin
Takashi Takizawa
DBパフォーマンスチューニングの基礎:インデックス入門
DBパフォーマンスチューニングの基礎:インデックス入門
Akira Shimosako
アクセスプラン(実行計画)の読み方入門
アクセスプラン(実行計画)の読み方入門
Akira Shimosako
やってはいけない空振りDelete
やってはいけない空振りDelete
Yu Yamada
MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座
Mikiya Okuno
ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀
増田 亨
Recommended
固定化か?最新化か?オプティマイザ統計の運用をもう一度考える。 -JPOUG Tech Talk Night #6-
固定化か?最新化か?オプティマイザ統計の運用をもう一度考える。 -JPOUG Tech Talk Night #6-
歩 柴田
今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7
yoku0825
hbstudy20100821 SpamAssassin
hbstudy20100821 SpamAssassin
Takashi Takizawa
DBパフォーマンスチューニングの基礎:インデックス入門
DBパフォーマンスチューニングの基礎:インデックス入門
Akira Shimosako
アクセスプラン(実行計画)の読み方入門
アクセスプラン(実行計画)の読み方入門
Akira Shimosako
やってはいけない空振りDelete
やってはいけない空振りDelete
Yu Yamada
MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座
Mikiya Okuno
ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀
増田 亨
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
歩 柴田
CLUB DB2 第122回 DB2管理本の著者が教える 簡単運用管理入門
CLUB DB2 第122回 DB2管理本の著者が教える 簡単運用管理入門
Akira Shimosako
MySQL SYSスキーマのご紹介
MySQL SYSスキーマのご紹介
Shinya Sugiyama
インフラエンジニアのためのRancherを使ったDocker運用入門
インフラエンジニアのためのRancherを使ったDocker運用入門
Masahito Zembutsu
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
infinite_loop
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
Akira Shimosako
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
NTT DATA Technology & Innovation
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
yoku0825
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
監査ログをもっと身近に!〜統合監査のすすめ〜
監査ログをもっと身近に!〜統合監査のすすめ〜
Michitoshi Yoshida
InnoDBのすゝめ(仮)
InnoDBのすゝめ(仮)
Takanori Sejima
Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎
Masayuki Ozawa
BGP/MPLS-VPNのお勉強資料
BGP/MPLS-VPNのお勉強資料
Toshiki Tsuboi
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
Nobuyuki Sasaki
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
yoku0825
MySQLおじさんの逆襲
MySQLおじさんの逆襲
yoku0825
Locondo 20190215@ec tech_group
Locondo 20190215@ec tech_group
Shinya Sugiyama
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
IBM Analytics Japan
Vacuum徹底解説
Vacuum徹底解説
Masahiko Sawada
MySQLアンチパターン
MySQLアンチパターン
yoku0825
私がMySQLを始めた理由
私がMySQLを始めた理由
yoyamasaki
カジュアルにバックアップ - MySQL Casual Talks 福岡
カジュアルにバックアップ - MySQL Casual Talks 福岡
Aya Komuro
More Related Content
What's hot
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
歩 柴田
CLUB DB2 第122回 DB2管理本の著者が教える 簡単運用管理入門
CLUB DB2 第122回 DB2管理本の著者が教える 簡単運用管理入門
Akira Shimosako
MySQL SYSスキーマのご紹介
MySQL SYSスキーマのご紹介
Shinya Sugiyama
インフラエンジニアのためのRancherを使ったDocker運用入門
インフラエンジニアのためのRancherを使ったDocker運用入門
Masahito Zembutsu
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
infinite_loop
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
Akira Shimosako
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
NTT DATA Technology & Innovation
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
yoku0825
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
監査ログをもっと身近に!〜統合監査のすすめ〜
監査ログをもっと身近に!〜統合監査のすすめ〜
Michitoshi Yoshida
InnoDBのすゝめ(仮)
InnoDBのすゝめ(仮)
Takanori Sejima
Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎
Masayuki Ozawa
BGP/MPLS-VPNのお勉強資料
BGP/MPLS-VPNのお勉強資料
Toshiki Tsuboi
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
Nobuyuki Sasaki
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
yoku0825
MySQLおじさんの逆襲
MySQLおじさんの逆襲
yoku0825
Locondo 20190215@ec tech_group
Locondo 20190215@ec tech_group
Shinya Sugiyama
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
IBM Analytics Japan
Vacuum徹底解説
Vacuum徹底解説
Masahiko Sawada
MySQLアンチパターン
MySQLアンチパターン
yoku0825
What's hot
(20)
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
CLUB DB2 第122回 DB2管理本の著者が教える 簡単運用管理入門
CLUB DB2 第122回 DB2管理本の著者が教える 簡単運用管理入門
MySQL SYSスキーマのご紹介
MySQL SYSスキーマのご紹介
インフラエンジニアのためのRancherを使ったDocker運用入門
インフラエンジニアのためのRancherを使ったDocker運用入門
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
監査ログをもっと身近に!〜統合監査のすすめ〜
監査ログをもっと身近に!〜統合監査のすすめ〜
InnoDBのすゝめ(仮)
InnoDBのすゝめ(仮)
Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎
BGP/MPLS-VPNのお勉強資料
BGP/MPLS-VPNのお勉強資料
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQLおじさんの逆襲
MySQLおじさんの逆襲
Locondo 20190215@ec tech_group
Locondo 20190215@ec tech_group
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Vacuum徹底解説
Vacuum徹底解説
MySQLアンチパターン
MySQLアンチパターン
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
Similar to メッチャ役に立つauto_incrementの話
(8)
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における基本的なアカウント管理
メッチャ役に立つ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