Community journal

The latest from the MySQL community

Ideas, releases, practical guides, and perspectives from the people building with MySQL.

Follow the feed
Showing entries 1491 to 1500 of 3187 « Previous | Next »
InnoDBのFULLTEXT SEARCHに変更してハマった


MyISAMとInnoDBでFULLTEXT SEARCHは完全に同じだと思い込んでたのでハマった。
MyISAMのNATURAL LANGUAGEモードの検索では半分以上の行に含まれるワードは検索対象にならない。InnoDBではその仕様はなくなってる。NATURAL LANGUAGEモードを使うケースほとんどないから困らないけど、テストケースが通らなくてハマった。

mysql> CREATE TABLE myisam (a TEXT, FULLTEXT(a)) CHARSET latin1 ENGINE=MyISAM;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE innodb (a TEXT, FULLTEXT(a)) CHARSET latin1 ENGINE=InnoDB;
Query OK, 0 rows affected (0.24 sec)

mysql> INSERT INTO myisam VALUES('ab cd DE'), ('aa bb DE'), ('cc dd DE');
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql> INSERT INTO innodb VALUES('ab cd DE'), ('aa bb DE'), ('cc …

[さらに読む]
Ruby, MySQL のうるう秒の扱い

2015/7/1 にうるう秒が挿入されるということで、うるう秒の話題が盛り上がってるようなので自分も書いてみます。

Linux 上のプログラムが時刻で60秒を刻むには、うるう秒対応のタイムゾーンを使う必要があります。

通常はうるう秒を考慮していないタイムゾーンが使用されているので、60秒を含む時刻になることはありません。 60秒を含む時刻を扱うには、right/Japan のように right/ を前につけたタイムゾーンを指定します。

前回のうるう秒は 2012/7/1 08:59:60 (JST) だったので、これで試してみます。

% TZ=Japan date --date='2012-07-01 08:59:60'
date: `2012-07-01 08:59:60' は無効な日付です
% TZ=right/Japan date --date='2012-07-01 08:59:60'
2012年  7月  1日 日曜日 08:59:60 JST

Ruby

…

[さらに読む]
MySQLにうるう秒は保存できるのか試した

結果、保存できなかった😢

SET sql_mode = STRICT_ALL_TABLES;

CREATE TABLE time_leap (
  dt datetime,
  ts timestamp
) ENGINE=InnoDB;

INSERT INTO time_leap VALUES ('2012-06-30 23:59:59', '2012-06-30 23:59:59');
-- Query OK, 1 row affected (0.02 sec)

INSERT INTO time_leap VALUES ('2012-06-30 23:59:60', '2012-06-30 23:59:60');
-- ERROR 1292 (22007): Incorrect datetime value: '2012-06-30 23:59:60' for column 'dt' at row 1

これを試そうと思ったのは、timestamp型は内部表現がepoch秒なのでうるう秒保存するの無理だろうけどdatetime型は秒の精度に6bit割いてるので[0, 64)の範囲の値を保存できるだけの精度を持ってると思ったんですけど、よく見たらドキュメントに6 bits second …

[さらに読む]
MySQL5.6 slave_parallel_workers

MySQLのレプリケーション構成において、スレーブの処理を並列にして処理を
高速化する事が可能。但し、5.6までは並列化の単位はスキーマ(データベース)
単位になります。5.7からは、同じスキーマ単位でも並列処理が可能になる予定だそうです。
OS側に余裕があれば、処理を高速化し時間を短縮化する事で他の業務も出来るようになるので、
MySQLのレプリケーションがスレッド不足で遅延している環境では、
有益な選択肢になるかと思います。もちろん、自分でツール開発やシェルを工夫して
対応する事も可能ですが、MySQL UtilityやMySQL Enterprise Monitorなどで管理していくと、
…

[さらに読む]
MySQL Memcached Plugin

MySQL5.6から利用出来る、memcached pluginの動作確認になります。
Webサイトではユーザーセッション管理などでmemacheとrepcachedを利用して、
高速データ処理をしてました。MySQLでもPluginとしてmemcachedが使えるようになり、
NOSQL処理も出来るようになりました。mysqlのmemcachedはACID対応可能で、
innodbと連携出来るので、整合性を保ったNOSQLとして利用出来る事が特徴になります。
また、SETコマンドなどで処理したデータはテーブルに保存されるので、
再起動しても残す事が出来ます。

Pluginのインストール

root@localhost [(none)]>system cat /usr/local/mysql/share/innodb_memcached_config.sql
create database innodb_memcache;

use innodb_memcache;


-- ------------------------------------------------------------------------
-- Following are …
[さらに読む]
文字列の中から文字列を解析/検索

Original post: http://anothermysqldba.blogspot.com/2014/12/findparse-string-from-within-string.html

だから私は最近、別の文字列から文字列を解析に関するいくつかの異なる質問や投稿に気づいた。 いくつかのソリューションは、新しい機能やなどの作成に含まれるものの、それはいくつかのケースでは、単一のクエリ内でもを行うことができます。 

たとえば、私たちはURLからドメインを引き出すために探しているとしましょう​​。 私はなぜ、どのようにこの作品を詳細に入るためにしようとします。 
我々は、次の表を持っている。 

CREATE TABLE `parse_example` ( 
`id` int(11) NOT NULL …

[さらに読む]
MySQLレプリケーションの運用が劇的変化!!GTIDについて仕組みから理解する

メリークリスマス!!やあ、良い子のみんな!!サンタクロース・・・ではなく、ヒゲモジャギークからのクリスマスプレゼントだよ!!

というわけで、MySQL Casual Advent Calendarの25日目である。今朝Advent Calendarを覗いてみると、本日分のエントリーが無かったので、急遽書くことにした。Advent Calendar最後の日、クリスマスを飾る記事のテーマはGTIDだ。

前回の投稿では、MySQL 5.6の目玉機能として、レプリケーションがクラッシュセーフになったことを挙げた。レプリケーションまわりで言えば、もうひとつ外せない目玉機能がある。それがGTID(Global Transaction ID)である。

GTIDは良くも悪くもレプリケーションの運用を変化させる。GTIDを使うことによって得られる最大のメリットは、CHANGE MASTER TOで

MySQL Fabricつらい(クライアントとしてのmysqlfabricとサーバーとしてのmysqlfabricのオプションの扱いが一緒)

/etc/mysql/fabric.cfg はイケてない。
何がどうイケてないかというと、クライアントとしてのmysqlfabricとサーバーとしてのmysqlfabricを全く区別していないところ。

最初に(そしてこれは随分前から)気が付いたのは、[protocol.xmlrpc]セクションと[protocol.mysql]セクションのdisable_authentication。

[protocol.xmlrpc]
disable_authentication = no



デフォルトはnoだが、認証を無効化したいと思うとyesにする。
だがしかしこれ、サーバーとして起動されたときとクライアントとして起動されたときで同じパラメーターを使っているため、MySQL Fabricサーバーが起動している最中に書き換えたりすると(サーバーは再起動するまでその内容が有効にならないので)、結構アレってなる。

…

[さらに読む]
Firebirdでの数値の扱い方を知る

本エントリはFirebird Advent Calendar 2014の22日目です。(21日目はこちら)でまだ24日目の参加者募集中。

参照しているのはカルロスの以下のプレゼンテーション資料です。

Understanding numbers in Firebird (Carlos Cantu, Firebase.com.br)

2013/2014年はほとんど動きが見えなかったFirebirdプロジェクトですが、本年後半から徐々にまた動き始めました。これからしばらく …

[さらに読む]
MySQLのレプリケーションでありがちな10の問題

レプリケーションの問題でよくある10パターン。

1) セッションのみで有効なバイナリログ

sql_log_bin = 0を設定すると、そのセッション内でバイナリログを無効にできる。つまり、マスタのセッション内で実行したDMLやDDLは、スレーブにはレプリケーションされない。

マスタでバイナリログをオフにする。

mysql> set sql_log_bin = 0 ;
Query OK, 0 rows affected (0.00 sec)

reptestデータベースにテーブルを作成してみる(マスタ上で実行)。

mysql> create table reptest(ID int) ;
Query OK, 0 rows affected (0.01 sec)

mysql> show tables ;
+-------------------+
| Tables_in_reptest |
+-------------------+
| reptest           |
+-------------------+
1 row in set (0.00 sec)

…

[さらに読む]