MySQLにはFOSS License
Exceptionという制度がある。そのような制度があることはあまり知られていないし、名前を知っていても内容はよく知らない、または誤解しているという人が結構居る。そこで、FOSS
License Exceptionについて改めてここで紹介したい。
MySQL FOSS License Exception
http://www.mysql.com/about/legal/licensing/foss-exception/
知っての通り、MySQLはデュアルライセンスだ。無料で公開されているMySQL Community
ServerはGPLv2でライセンスされており、その他に有料のコマーシャル・ライセンス版が存在する。コマーシャル・ライセンス版はソースコードを公開したくないユーザー向けのライセンスで、俗にOEM版とも呼ばれる。
さて、FOSS …
テーブル定義を変更したい。インデックスが壊れてしまったので再作成したい。そんな場合はALTER TABLEを使う。ALTER
TABLEはテーブル定義を変更するお馴染みのコマンドであるが、その挙動は意外と知られていない。(エキスパートとおぼしき方々からも度々質問を受ける。)そんなわけで、今日はALTER
TABLEについて解説しようと思う。
まず結論から言うと、なんとMySQLのALTER
TABLEはテーブルのデータを全てコピーし直すのである。なんて無駄なことを!?と思うかも知れないが、テーブル定義(スキーマ)の変更を動的に行うには、ストレージエンジンによるサポートが必要であり、動的なスキーマ変更をサポートしているストレージエンジンはまだ少ないのである。(動的スキーマ変更をサポートしているのはMySQL …
オープンソースカンファレンス、今年も全国各地で行われます。
今週末には島根で行われるのですが、そこで以下のセミナーやります。ご興味のある方は是非ご参加ください。
2009-05-16 (土) 14:00-14:45 MySQLでトリガやストアドを作ってみよう!
SQL/PSM入門
講師:木村 明治(サン・マイクロシステムズ株式会社)
担当:日本MySQLユーザ会(MyNA)
MySQL5.0よりSQL/PSMを使ってトリガやストアドルーチン(プロシジャ、トリガ)を作成・利用できる
ようになりました。今回は入門編としてSQL/PSMの概略と基礎をご説明させていただきます。
同じくSQL/PSMが使えるIBM DB2や、OracleのPL/SQL, …
MySQL 5.1から利用出来るパーティショニングの種類には、次の4つがある。
- RANGEパーティショニング
- LISTパーティショニング
- [LINEAR] HASHパーティショニング
- [LINEAR] KEYパーティショニング
RANGEパーティショニングは値の範囲を指定する。次のように日付を用いて範囲を指定するのが代表的な使い方だ。詳細はこちらの記事(パーティショニングの使用例 - http
session情報)を見て欲しい。
[さらに読む]
mysql> CREATE TABLE http_session (
-> session_id VARCHAR(32) NOT NULL,
-> last_access TIMESTAMP NOT NULL,
-> created TIMESTAMP NOT NULL,
-> t_session_data VARCHAR(1024)
-> ...(中略)...
-> PRIMARY KEY …
前回の説明のときに、しれっと書いてしまいましたが、Connector/Cというのもリリースされました。
ただ、これは全く新しいというものではなく、従来のC言語ライブラリを単独パッケージングしたもので、libmysqlだけ欲しい、という方に便利です。
去年の八月(2008-08-05)にプレビュー版がでたConnector/C++がConference & Expo
2009にあわせてGAになりました。(MySQL Connector/C++ 1.0.5 GA
(21.04.2009))
GAということで、Connector/C++自身をビルドすることなく利用することができるようになりました。(Windows版)
ここではVisual Studio 2005から使ってみます。参考資料は以下。
Not so Quiet on the C++ Front
Windows版はインストーラ形式(VS2008), ZIP形式(VS2005, VS2008)で提供されています。
ただ、これは本当にincludeとlib, dllしかないので、ちょっと試してみるには不向きです。
…
先週一週間、MySQL Conference & Expo 2009 に参加してきました。ほとんどのキーノートのビデオや一部のセッションの資料は公開されているようなので、それ以外、全体からうけたイメージなどについて、つらつらと。
キーノートの動画一覧 (「Mysqlconf 09」で始まるもの)
プレゼン資料一覧
…
[さらに読む]
ご存じの方も多いと思いますが、先週MySQL Conference & Expo
2009が米国で開催され、いくつかのニュースが発表がされています。主要なものについては他のブログで紹介されてますので、
ここでは、あまり取り上げられないコネタをとりあげていきたいと思います。
本日は組み込みInnoDB(Embedded InnoDB)です。
オープンソースストレージエンジンのInnobase、組み込み向け「Embedded
InnoDB」発表(SOURCEFORGE.JP)
…
MySQLには、現在時刻を求める関数としてSYSDATE()とNOW()という2つの関数が実装されている。そして、それらは微妙に動作が違う。SYSDATE()は関数が呼び出された瞬間の時刻を返すのに対して、NOW()はクエリ開始時の時刻を返す。例えば、100秒かかるような長いクエリにおいて両者を利用した場合、SYSDATE()では結果に最大100秒の差が生じるのに対して、NOW()では差が生じない。NOW()では関数が最初に実行された時に結果がキャッシュされ、以降はキャッシュされた値が利用されるからだ。
次のようにSLEEP()を利用するとわかり易いだろう。
[さらに読む]
mysql> SELECT SYSDATE(), SLEEP(100), SYSDATE();
+---------------------+------------+---------------------+
| SYSDATE() | SLEEP(100) | SYSDATE() | …
こんにちは。今日はMyISAMの内部動作をトレースする方法をご紹介します。
MyISAMはデバッグ目的に内部動作をログに書き出す機能を持っています。これを使う機会はあまり無いと思いますが、環境の動作分析やパフォーマンスチューニングの参考情報にはなると思います。
[myisam-logの出力方法]
my.cnfもしくはmy.iniファイルの[mysqld]セクションに以下のように設定します。
[mysqld]
log-isam=c:/temp/mysql_isam.log
c:/temp/mysql_isam.logの部分はmyisam動作トレースログを出力したいファイルパスに書き換えて設定を行ってください。設定後、MySQLサーバを再起動します。
…
[さらに読む]