気軽に楽しくプログラムと遊ぶ

自分が興味があってためになるかもって思う情報を提供しています。

MySQL

DB分割(シャーディング)時のMySQLのID採番について

ID採番方法 ✗ auto_increment idが重複する問題があり ◯ sequence tableの作成 ◯ UUIDカラムの追加 ◯ ULID(時系列な並びのID) ◯ UUIDv6, UUIDv7, UUIDv8も時系列順にソート可能 Seaquence データが大規模になると、シーケンス発行がボトルネックなりすい UUI…

MySQL ギャップロックとは?

現場でギャップロックという聞き慣れない用語を耳にしたので、 以下の記事を参考に理解する。 MySQLのギャップロックとネクストキーロック - 41から始めました MySQLロック ロックの種類 排他ロック DML実行時にトランザクションで最初に取得されるロック ロ…

MySQL 実行計画(EXPLAIN)

MySQLにおける実行計画の見方について記載します。 EXPLAIN 結果確認 クエリコストをみたい場合 format=jsonをつけてexplainを実行する。 explain format=json 【クエリ】 結果Json query_costの箇所にコストが表示される { "query_block": { "select_id": 1…

MySQL Supser権限を付与する

Supser権限を付与 テーブル定義+データインポートの際に、Super権限が必要との事だったので、付与 Super権限が付与されていないことを確認 SELECT host, user, Super_priv FROM mysql.user WHERE user='hoge'; +-----------+---------------+------------+ |…

DBアクセス MyBatisの各種ファイルを自動生成するための設定

公式の下記ページをGoogle翻訳した手順を貼っておく。 MyBatis各種ファイル自動設定 http://www.mybatis.org/generator/index.html MyBatis各種ファイル自動生成する 以下、翻訳したものを引用 ①eclipseマーケットプレイスで、プラグイン「MyBatis Generator…

MySQLでちょっと動作確認するときに使えるTableとData

この程度のものなら、さっと自分で書いてもよいのかもしれないけど。 時間がないときにさっと作れるように残しておく。 データベースを作成していない場合は、以下の記事を参考にしてみてください。 http://tamata78.hatenablog.com/entry/2019/05/26/111113…

MySQL DBとUser作成して、テーブル作成できる状態にする

ローカルのMySQLで、SQL実行環境を作る際の一連の流れを以下に記載します。 前提条件 OS: macOS 10 SQLは、ターミナル上のコマンドラインで実行 MySQLのインストールが済んでいない方は以下を参考にしてみて下さい。 HomebrewでMySQLをインストールする Wind…

【Java】DB設計書、ER図、クラス図を自動生成するツールたち

Javaで作られたシステムでドキュメントがない場合、システム理解を効率的に進めるためには、 DB設計書、ER図、クラス図の自動生成して、インプット情報とするのが良いです。 WindowsでEclipseを使って開発する環境をイメージしています。 自動生成ツールの導…

MySQL Indexの作成、参照、変更、効果確認コマンド

Indexの作成 -- 通常インデックス create index idx_name on table_name (name); -- 複合インデックス create index idx_group_id_name on table_name (group_id, name); Indexの参照 作成したIndexを確認する show index from table_name; Indexの削除 誤っ…

DDLのトランザクション(PostgresSQL,Oracle,MySQL)

PostgreSQL CREATE TABLEやALTER TABLEなどのDDL命令も COMMIT、ROLLBACKの対象になる 第1回 トランザクションについて Oracle DDLはトランザクション対象にはならない。暗黙コミットされる。 oralce 以下引用 PostgreSQL では、CREATE TABLE や DROP TABLE …

Oracle,MySQL,Postgresの日付型→文字列型変換(YYYY/MM/DD)

Oracle TO_DATE(TO_CHAR(SYSDATE), 'YY-MM-DD') MySQL DATE_FORMAT( SYSDATE() , '%Y-%m-%d') Postgres TO_DATE('20060830', 'YYYYMMDD')

HomebrewでMySQLをインストールする

MySQLをインストール $ brew update $ brew install mysql mysqlがインストールされたかを確認 $ mysql --version mysql Ver 14.14 Distrib 5.7.10, for osx10.11 (x86_64) using EditLine wrapper mysqlを起動 $ mysql.server start [14:23:02] Starting My…

MySQLのコネクション接続数とスレッド数を参照するコマンド

MySQLでtoo many connectionsエラーが発生した経緯もあり、MySQLのコネクション接続数とスレッド数を参照するコマンドを調査しました。以下に記載します。 現在の接続数 以下は累計のため、現在値を把握するためには前回値との差分を取る mysql> show global…

MySQLインデックス関連のSQLコマンド

インデックスを張るテーブル CREATE TABLE tbl_Address( UserID INT NOT NULL PRIMARY KEY, Zip CHAR(8) DEFAULT NULL, Ken CHAR(5) DEFAULT NULL, Addr VARCHAR(200) DEFAULT NULL, INDEX idx_zip(Zip) ); インデックス関連SQL -- index作成(Zipフィールド…

MySQL テーブル定義変更コマンド

順次追記していきます。 カラム名変更 ALTER TABLE スキーマ名.テーブル名 CHANGE 旧項目名 新項目名 型 NOT NULL制約 COMMENT 'コメント'; 項目桁数変更 型(X):Xに桁数を設定 ALTER TABLE スキーマ名.テーブル名 MODIFY 項目名 型(X) NOT NULL制約 COMMENT…

MySQLでSERIAL データ型の動作を確認する

SERIAL データ型とは INTEGER で NOT NULL かつ UNIQUE であるカラムで MySQL 固有の機能である AUTO_INCREMENT(自動採番)が指定されている。 テーブル定義例 CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, path VARCHAR(1000), bug_id BIGINT UN…

Linuxで使用するMySQL関連コマンド

■mysqlインストール sudo yum -y install mysql mysql-devel mysql-server mysql-utilities■外部ホストのmysqlへログイン mysql -u user_name -D dbname -p -h host_name -P port_num -A

MySQL管理系コマンド

■DB登録テーブル一覧表示 SHOW TABLES FROM database;■指定ユーザーの権限一覧表示 SHOW GRANTS FOR user;■大文字、小文字区別設定の確認 show variables where variable_name='lower_case_table_names'; lower_case_table_names = 00...大文字小文字を区別…

MySQLの文字コード変更

MySQLで文字化けを防ぐには以下の設定を統一しておく・Database の文字コード ・テーブルの文字コード ・カラムの文字コード ・クライアントの文字コード <DBの文字コード確認> show variables like "chara%"; Variable_name Value character_set_client u…