複合インデクスとは、テーブルの複数のカラムを組み合わせて1つのインデクスとするものです。 たとえば、以下のようなカラムを持つ「従業員マスタ」というテーブルに「姓」と「名」で1つのインデクスを作成することを指します。 従業員マスタ 従業員番号 姓 名 性別 住所 生年月日 入社年月日 会社 所属部門 職位 レコード作成日時
複合インデクスとは、テーブルの複数のカラムを組み合わせて1つのインデクスとするものです。 たとえば、以下のようなカラムを持つ「従業員マスタ」というテーブルに「姓」と「名」で1つのインデクスを作成することを指します。 従業員マスタ 従業員番号 姓 名 性別 住所 生年月日 入社年月日 会社 所属部門 職位 レコード作成日時
MySQLに限った話ではないが、データベース管理システムに大量のデータを投入するのは時間が掛かり大変苦痛を伴う作業である。劇的に効能があるわけではないが、MySQLを利用しているとき、特にInnoDBを使っている場合にはデータの投入を高速化するためにいくつかテクニックがあるので紹介しよう。皆さんの作業時間が短縮され、少しでも早く帰路に着いたりサービスインさせたりという形でお役に立てれば幸いである。ちなみに、タイトルはネタであるのだが、もし本当に3秒で以下の全ての設定を行えた人が居たら教えて頂きたい! ログファイルサイズの調整データ投入時に限った話ではないが、ログファイルサイズを調整するのは更新性能にとって非常に重要なファクターである。バッファプールのサイズが重要なことに代わりはないが、同じぐらいログファイルのサイズも重要である。InnoDBはログファイルを使い切ってしまうと、バッファプール
年月型が無いため、月の計算が面倒 カラムに年月のみを持ちたいケースが結構あると思います。 僕はint型で[YYYYMM]形式の数値を持たせることが多いのですが、 月の加算が必要な場合、int型であるためにDATE_ADD() などの便利な関数が使えません。 201212 + 1(か月) = 201301 とはならないですよね当然。 MySQLに年月型というのは存在しませんが、以下の関数を使うことで、int型を年月型として使いやすくなります。 PERIOD_*系の関数で年月型のようにint型を扱う PERIOD_* 系の関数を使うと、YYYYMM形式の数値に対して、あたかも年月型であるかのように計算ができます。 PERIOD_ADD(P,Ns) N 月を、期間 P に加えます (フォーマットは YYMM または YYYYMM) 。フォーマット YYYYMM で値を返します。期間引数 P は日
MySQL 5.1.67環境です。 タイトルの通りなのですが、MySQLマニュアルのTIMESTAMPの説明を読んでみると、 NOT NULL制約に関して気になる記述がありました。 MySQLマニュアルのTIMESTAMPの説明 MySQL 5.1 リファレンスマニュアル (オンラインヘルプ) :: 6.3.1.1 TIMESTAMP の特性によると、 TIMESTAMP カラムはデフォルトで NOT NULL になっているため、NULL 値を含めることはできません。NULL を指定すると、現在のタイプスタンプが割り当てられます。 だそうです。 さらっと書いてるけど、NOT NULL制約がエラーチェックに使えないってことじゃないか。 実際、 MySQLのTIMESTAMPカラムをNOT NULLで定義しても、NULLのINSERT/UPDATEを実行すると現在時刻になってしまいます。 これ
こんにちわ、ミツバチワークス stoneです。 DECOLOGでは、データベースにMySQLを使用しています。 ストレージエンジンのメインはInnoDBなのですが、他にもMyISAM、BlackHole、Archiveエンジンを使っています。 今回は、その中でBlackHoleエンジンについて、DECOLOG内での利用方法をご紹介したいと思います。 BlackHoleエンジンについて BlackHoleエンジンは、何もしません。 insert、update、deleteを行っても、データは全く変更されませんし、selectをしても、データは何も返ってきません。 実際のデータファイルを見てみても、テーブル定義ファイルの.frm以外のファイルは作成されません。 /dev/nullと似ているイメージです。 が、BlackHoleのテーブルに対して発行されたinsert、update、delete
こんにちはこんにちは。最近お腹痛いばっかり言ってることで有名なiwanagaです。 DeNAは外部的にはプラットフォーム的な部分の方がフィーチャーされることが多いですが、実はソーシャルゲームの提供も行っています。怪盗ロワイヤルとか、どこかで聞いたことがあるのではないでしょうか。 僕はDeNAでソーシャルゲームが誕生した辺りからずっとサーバサイドを見てきましたが、そんな運用の中で自分が貯めてきた知見とかTIPSをご紹介したいと思います。 かれこれ10タイトル近くはレビューしたり運用したりしてるため結構言いたいことはいっぱいあるので、小出しにしつつ評判よければ次も書きます。 ソーシャルゲームのためのMySQL入門一覧 ソーシャルゲームのためのMySQL入門 - Technology of DeNA ソーシャルゲームのためのMySQL入門2 - Technology of DeNA 「MySQL
SNSやソーシャルゲーム、アドネットワークなどのシステムではいろいろなログ情報をDBに保存することもあると思います。 そのさい、日々増えつづけるデータやパフォーマンスをどの様にさばいていくかが重要になってきます。 今回はログ系のデータをMysqlでどのように運用していくか、をテーマにいくつかのノウハウをまとめました。 ログ系テーブルの特徴 ログ系のデータとは、つまり何かのアクションの履歴データのことです。 一般的にはこのような形になるかと思います。 CREATE TABLE `t_logs` ( `id` bigint(20) unsigned NOT NULL, `user_id` int(10) unsigned NOT NULL DEFAULT '0', `event_id` int(10) unsigned NOT NULL DEFAULT '0', `created` datet
MySQLをyumでインストールした直後にオリジナルのmy.cnfをリネームして、 新しいmy.cnfを適当に作成すると、サーバーの起動に失敗しました。 サーバーの起動を成功させるまでのメモです。 [root@localhost etc]# /etc/rc.d/init.d/mysqld restart Stopping MySQL: [FAILED] touch: cannot touch `/var/log/mysql/error.log': No such file or directory chown: cannot access `/var/log/mysql/error.log': No such file or directory chmod: cannot access `/var/log/mysql/error.log': No such file or director
mysql> CREATE TABLE test -> ( -> id INT NOT NULL auto_increment, -> name VARCHAR(64), -> email VARCHAR(320) NOT NULL, -> password VARCHAR(32) NOT NULL, -> primary key (id) -> ); Query OK, 0 rows affected (0.00 sec) mysql> ALTER TABLE test ADD CONSTRAINT uq_test UNIQUE KEY (email, password); ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes mysql>
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く