Archives

You are currently viewing archive for September 2007
Category: Web dev
Posted by: hajime osako
mysql:12216

Example: jdbc:mysql://localhost/dbname?zeroDateTimeBehavior=convertToNull
Category: Web dev
Posted by: hajime osako
第4回 JavaScriptでオブジェクト指向プログラミング − @IT

prototypeを使うと:
メソッドをインスタンスにコピーしないため、メモリを節約できる。
後からでも、クラスを変更することで、インスタンスにも変更を反映できる。
まず、インスタンスを探し、インスタンスのプロトタイプを探し、クラスのプロトタイプを探す。
prototypeをオブジェクトリテラルで記述すると見た目がきれい。
Animal.prototype = {
  getVoice : function() {
    window.alert(this.name + "「チュウ!」");
  },
  toString : function() {
    window.alert(this.name + " " + this.sex);
  }
};
Category: Web dev
Posted by: hajime osako

09/11: MySQL > Tips

Category: Web dev
Posted by: hajime osako
MySQL 5.1 supports a row level replication. Before 5.1, it was a SQL statement replication, so that some functions such as UUID() were not replicated properly.

EXPLAIN (testing SQL);

MySQL does not use INDEX if you use LIKE '%...' or LIKE '_...'.
MySQL may not use INDEX if you use the result of some function.

SELECT * FROM table WHERE TO_DAYS(created_date) <= 7;

InnoDB's count(*) is much slower than MyISAM
Category: Web dev
Posted by: hajime osako
MySQL AB :: MySQL 4.1 リファレンスマニュアル :: 7.5.9.3 ロックを取得する読み取り
SELECT LOCK IN SHARE MODE and FOR UPDATE
テーブル型毎のロックの挙動

InnoDB型のREADロックとWRITEロックの取得は、MyISAM型のそれとは大きく異なります。MySQLのトランザクション処理はMVCC(Multi Version Concurrency Control: 多版型同時実行制御)を基に行われるので、WRITEロックとREADロックは競合しません。
データ操作(INSERT, UPDATE, DELETE)はデータ検索(SELECT)の実行をブロックしませんし、逆もまた然りです(補足 1)。特に、SELECT文の実行は一切ブロックされません。

次に、WRITEロック間の関係ですが、一意性(UNIQUE)制約もしくは主キー(PRIMARY KEY)制約を持つテーブルの場合は行レベルロック、それ以外のテーブルではテーブルロックが取得されます。
これはMySQLの実装方式に起因するもので、MySQL特有の挙動です。

SELECT FOR UPDATE文で排他的ロックを、SELECT LOCK IN SHARE MODE文で共有ロックを設定することができます。これらはトランザクションブロック内でのみ実行されます。

IN SHARE MODE と FOR UPDATE 読み取りによって設定されたロックは、トランザクションがコミットされたりロールバックされたりした時にリリースされます。


MySQL SELECT文

SELECT * FROM table_a USE INDEX (use_index_name);
SELECT * FROM table_a IGNORE INDEX (ignore_index_name);
SELECT col1, col2, col3 FROM table_a ORDER BY 1, 2;
SELECT STRAIGHT_JOIN * FROM T1,T2,T3;
SELECT HIGH_PRIORITY * FROM table_a;
SELECT SQL_BIG_RESULT * FROM table_a GROUP BY col1;
SELECT SQL_BUFFER_RESULT * FROM table_a;
SELECT SQL_SMALL_RESULT * FROM table_a GROUP BY col1;
SELECT SQL_CALC_FOUND_ROWS * FROM table_a LIMIT 100;
SELECT FOUND_ROWS();
SELECT * FROM table_a FOR UPDATE;
Category: Web dev
Posted by: hajime osako
DbEdit update site http://dbedit.sourceforge.net/update
QuickRex update site http://www.bastian-bergerhoff.com/eclipse/features/
eSpell download site http://www.bdaum.de/eclipse/
SVNKit update site http://svnkit.com/
Subclipse update site http://subclipse.tigris.org/update_1.2.x
SimpleTest download site http://simpletest.org/en/extension_eclipse.html
EMF, GEF, VE, WST(WTP) and XSD from Callisto discovery site
PDT update site http://downloads.zend.com/pdt
JSEclipse download site http://www.adobe.com/cfusion/entitlement/index.cfm?e=labs%5Fjseclipse
Category: Web dev
Posted by: hajime osako