MySQLでは、主キー(プライマリーインデックス)、ユニークキー、インデックス、フルテキストが設定できます。 主キー テーブルの中のデータを識別する(重複する値のない)1つまたは複数のフィールド(1つのみ設定、Nullは … 続きを読む »
MySQLでは、主キー(プライマリーインデックス)、ユニークキー、インデックス、フルテキストが設定できます。 主キー テーブルの中のデータを識別する(重複する値のない)1つまたは複数のフィールド(1つのみ設定、Nullは … 続きを読む »
なんとかして制限を超えないといけない時ってありますよね。 MySQLで、InnoDBでPK・Uniqueをはるカラムには、フィールド長の制限があります。 俗に言う767byte問題です。 MySQLの767byte問題 1,テーブルの文字コードをシングルバイトにする 2,カラムの文字コードをシングルバイトにする 3,カラムを分割する 総評 MySQLの767byte問題 プリフィックスは最高で1000バイトの長さまで可能です。(InnoDB テーブルは767バイト)非バイナリ データ タイプ(CHAR、VARCHAR、TEXT)では CREATE INDEX ステートメントのプリフィックス長は文字数で解釈される一方、プリフィックス リミットはバイトで計算されるという事を覚えておいて下さい。マルチバイトの文字セットを利用するカラムのプリフィックス長を指定する時にはこれを考慮に入れておいて下さ
このエントリーは、MySQL Casual Advent Calendar 2011 – MySQL Casual の第 19 日目のエントリーです。 皆さんこんにちは、n0ts こと、Naoya Nakazawa です。 今日は、みなさん日頃からカジュアルに MySQL を運用して、日々生活されていることと思います。MySQL は、非常に安定したオープンソースソフトウェアだと思いますが、どんなものでもときにはおかしくなったりするものです。 「備えあれば憂いなし」ということで、僕は日頃から Nagios というオープンソースソフトウェアを利用して、MySQL がおかしくなっていかいか日々カジュアルに監視しています。 今日は、カジュアルに MySQL を Nagios を使って監視する方法を紹介したいと思います。なお、今回は CentOS 5.7 x86_64 というカジュアルな Linux
4.1. データベースの基礎 データベースとは、「あらかじめ定義された形式で蓄積され、アプリケーションやユーザによって共有されるデータの集合」です。それを管理するシステムであるDBMS(DataBase Management System)を含めて言うこともあります。 データベースにはいくつかの種類がありますが、主流はリレーショナルデータベース(RDB)と呼ばれるものです。RDBを管理するシステムはRDBMSと呼ばれ、大小様々な製品、または、無償で利用可能なフリーソフトウェアが存在します。 4.1.1. RDBMSの種類と特徴 ここでは、主要なRDBMSの種類と特徴を紹介します。 Oracle社の大規模向け有償製品。「Oracle Database Standard Edition One」というライセンス体系により、以前に比べて安価に導入できるようになった(最小構成で98,000円)。U
みなさん、こんにちは。 産業システム部の青木です。 MySQLで日付型をフォーマットするにはDATE_FORMAT関数を使います。 -- %Y:年(4桁) %m:月(0埋め) %d:日(0埋め) SELECT DATE_FORMAT('20100101', '%Y%m%d') -- 2010/01/01 -- %y:年(2桁) %c:月(0埋めなし) %e:日(0埋めなし) SELECT DATE_FORMAT('20100101', '%y/%c/%e') -- 10/1/1 -- %H:時間(0埋めの24時間) %i:分 %S:秒 SELECT DATE_FORMAT('2010-01-01 23:01:01', '%H:%i:%S') -- 23:01:01 SELECT DATE_FORMAT('2010-01-01 01:01:01', '%H:%i:%S') -- 01:01:
XAMPPを利用して開発するときに、レンタルサーバに設置されているPHPとかMySQLのバージョンにあったバージョンを利用することがありますが、 どのバージョンにどのミドルウェアが入ってるのか、いつもわかりません。 XAMPP ちなみに、Wikipediaによると、”XAMPP”の由来は以下のとおり。 X - Windows、Linux、Mac OS X、Solarisのクロスプラットフォーム A - ApacheのA M - MySQLのM P - PHPのP P - PerlのP ということで、現時点までのものをメモしておくことにします。 XAMPP Apache MySQL PHP 5 PHP 4 phpMyAdmin
※RDS for AuroraのDB月額料金は、ストレージ100GB使用を想定、I/O料金は含まない。 sysbenchの実行条件 sysbench OLTPテストを行う。 sysbenchのバージョンは0.4.12.7。 スレッド数4, 16, 64, 128, 256のそれぞれについて、読み込みのみ(Read Only)と読み書き(Read-Write)の2パターンのテストを行う。 テストパターンごとに、データレコードの作成→キャッシュに載せるため、プレウォームでスレッド数16 Read Onlyのテストを実行→テストパターンの実行→データレコードの削除を行う。 テスト用レコード数は100万、最大実行時間は2分。 テスト実行コマンド例は次のとおりです(スレッド数4、Read-Writeテストの場合)。 $ sysbench --test=oltp \ --oltp-test-mode=
はじめに 前の記事の続き RDS をコマンドラインで構築する MariaDB でも同じ環境でベンチマークを取ってみる 参考 rds MariaDB 構成 以下のような構成で検証を行った。 MySQL と MySQL-Cluster と MariaDB に関しては EC2 インスタンス上に構築して同一ホスト上から mysqlslap を実行した。。RDS に関しては別途コントロール用のインスタンス(上図の RDS Console)を構築して、そのインスタンスから mysqlslap を実行した。 RDS を awscli で操作する RDS インスタンスの構築 ベンチマークに必要な RDS インスタンスを以下のようなパラメータで構築する。 パラメータ 値 備考 master-username ${mysql_user} master-user-password ${mysql_passwor
* ベンチマークシリーズ Aurora vs MySQL 結果まとめ ** 結果比較 - Connection数別トランザクション/分 Conn Aurora MySQL 20 6279.833 TpmC 6829.467 TpmC 30 8390.400 TpmC 1374.767 TpmC 50 11216.900 TpmC 1913.100 TpmC 70 14481.650 TpmC 2498.600 TpmC 100 14155.450 TpmC 2253.400 TpmC (詳細結果紛失 200 14932.350 TpmC ------- TpmC - 所感 データ投入や20Connくらいの接続数の場合、MySQLの方に分があったけれど、Conn数を増やしていくと、 Auroraがリニアにスコアを伸ばし、限界値が高いようです ※両方パラメータは吊るしの状態なためチューニング
データベースのキャッシュウォームアップについて キャッシュを活用して高速にクエリーをさばいているDBシステムも、リスタートなどのタイミングでキャッシュが失われると、途端に処理性能が著しく低下します。 そのようなケースに備えて、有名なDBシステムではスタート時にダンプ済みキャッシュを読み込んでウォームアップする機能が提供されています。 今回は以下の MySQL 系データベースについてキャッシュウォーミング機能を確認しました。 MySQL 5.6 RDS MySQL 5.6 MySQL 5.7 RDS Aurora それでは順に見ていきましょう。 MySQL 5.6 InnoDB で MySQL を使っている場合、クエリーキャッシュは buffer pool に保存されます。 buffer pool はメモリー上にあるため、MySQL を一旦停止すると失われてしまいます。 この問題を解決するた
環境 osx10.9.1 ruby2.0.0 rails4 MySQL5.6.x 経緯 既にMySQL上に存在するtableを使ってrailsしてみた。 MySQLと接続する 下のサイトを参考にして、database.yamlを定義。 - development: adapter: mysql2 encoding: utf8 database: my_db_name username: root password: root host: localhost pool: 5 timeout: 5000 参考サイト http://threetreeslight.com/post/61834000065/rails-db MySQL上のテーブルからscheme.rbを生成する。 rake environment -v -t RAILS_ENV=development db:schema:dump
はじめに AWSチームのすずきです。 今月(2015年10月)よりAWS東京リージョンで利用可能となった、RDS for Amazon Aurora。 とあるサイトのCMS(WordPress)のバックエンドDBとして稼働していたRDS(mysql)を移行し、 Amazon Auroraの性能の一端を確認できる機会がありましたので、紹介させて頂きます。 概要 RDSのスナップショットより、スナップショットの移行(migrate)を実施しました。 ElasticBeanstalkの機能(クローン、DNSスイッチ)を利用して、RDS(Aurora)参照環境の構築と切替を実施しました。 DBの最終同期として、mysqldumpコマンドによるエクスポート、インポートを行いました。 システム概要図 移行手順 スナップショットの復元 AWSコンソール、RDSのスナップショット画面より復元対象とするRD
CloudSQLの価格は実戦的という意味で、per Dayの価格を24hourで割った価格にしています。 メモリは2GBあれば検証としては十分なので格差は関係ありません。 IOPSはEBSならGeneral Purposeの1000GB*3で最大確保しています。 その他、ネットワーク周りなどポイントがあれば都度、補足していきます。 ベンチマークのデータ 今回、採取した全データはこちらになります。一部、目的に対して不要と判断したら省略しています。まぁ、こんなオレオレメモデータを見ても楽しくないでしょうから、1つ1つ考察していきましょう。 手法について 私がよくやる計測方法なのですが、innodb_buffer_pool_size がデータ容量より大きい健全な状態と、最小の16MBで過負荷ストレージを演出し、それぞれで参照/更新を別々にランダムアクセスをすることで、最初のボトルネックを炙り出し
データベースは,大量のデータをいかに高速に処理できるかが評価のポイントだ。MySQLは,軽量で高速なデータベースとして広く普及している。しかし,MySQLといえどもすべてのシチュエーションで最適なパフォーマンスを発揮できるわけではない。そのためにチューニングを行うわけだが,はたして何を基準にパフォーマンスの良し悪しを判断すればよいだろうか。判断するには,標準的なパフォーマンスツールが必要だ。MySQL5.1.4から,パフォーマンス・テストを実施する外部コマンドmysqlslapが実装された。今回は,このmysqlslapの使用方法を紹介する。 また10月30日と31日,日本で2回目となる「MySQLユーザーコンファレンス2008」が開催された。参加できなかった方のためにエッセンスをお伝えする。 mysqlslapの概要 これまで,MySQLではPerlベースのベンチマーク・ツールとしてMy
久しぶりの投稿第1段は、負荷エミュレーションツールのmysqlslapを使って手軽にテスト用データを作成するという内容です(MySQL5.5以降に付属のmysqlslapが必要)。 実行方法とパラメータの意味 例:約10万件のデータを作成 mysqlslap -u mysqlslap -p --create-schema=mysqlslap -a --no-drop \ --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=write \ --number-int-cols=2 --number-char-cols=2 \ --auto-generate-sql-secondary-indexes=3 \ --auto-generate-sql-execute-number=1000 --auto-gener
どうも、プラットフォームDivでエンジニアをやっている Wataru です。 最近3人目の子供が産まれて、産後自宅勤務をさせてくれた弊社はとてもいい会社だと思います。出産予定のあるエンジニアのかたは是非弊社に転職を。 さて、今回はRedisの紹介をさせて頂きたいと思います。 Redisってすごくマイナーなわけではないのですが、めちゃくちゃ便利なのにあまり注目されていないなーという印象があるので、これを機会に是非使ってみてもらえると嬉しいです。 Redisって何?Redisとは「remote dictionary server」から名前が付けられたオープンソースのkey-valueデータストアです。 MemcacheDB等のKVSとの最大の違いは、格納するバリューがデータ構造というところです。 つまり、リスト・セット・ハッシュなどのデータ構造で格納できるのでバリューに対してアトミックな操作が
MySQLにパーティショニングという機能があることを最近知った。調べても正直ついて いけてないが、いつか利用することもあるかもしれないのでまとめておく。 パーティショニングとはテーブルを分割して性能を向上させるための技術で、MySQL5.1 以降実装された。1つのテーブルを分割することにより高速化や要領拡大を実現し、 巨大なテーブルを使用する場合に威力を発揮する。 ちなみにオフィシャルサイトによれば「コンパイル時の不手際」により、MySQL 5.1.12 のバイナリ配布にはパーティショニングは含まれていないため、利用するにはバージョン アップが必要。 ソースからコンパイルする場合は、- -with-plugins=partitionとともにconfigureを実行する。 (- -with-partitionオプションはもう古いようで警告が出るが、有効にはしてくれる) パーティショニングを利
背景 一つ前の記事とも関連するが、 RDSでテーブル数のそれほど多くないインスタンスでも、 こちらの記事にかかれているような警告がでてしまうことがある模様。 http://dev.classmethod.jp/server-side/db/rds-mysql-innodb_file_per_table/ DB Instance XXXX-XXXX has a large number of tables and has the parameter innodb_file_per_table set to 1, which can increase database recovery time significantly. Consider setting this parameter to 0 in the parameter group associated with this DB i
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く