ページ 11

innodb への変更

Posted: 2015年4月16日(木) 16:28
by iwa
-----
ご利用のサーバ:CentOS7
MODXのバージョン:1.0.14J-r9
PHPのバージョン:PHP 5.4.16
MySQLのバージョン:mariadb-server-5.5.40
ブラウザ:chrome
-----

いつもありがとうございます。

一旦、myisam でインストールされたテーブル群を innodb に変更しようとした時、以下のようなエラーが発生しました

MariaDB [modx]> ALTER TABLE modx_testjp_site_tmplvar_contentvalues ENGINE=InnoDB;
ERROR 1214 (HY000): The used table type doesn't support FULLTEXT indexes

調べると、5.6 からは FULLTEXT index も使えるようなのですが。

ご質問は以下となります。

1.

http://modx.jp/docs/install/env.html

に記載されている innodb のサポートをされていると記載がありますが、なにか条件があるのでしょうか。
もし、条件があれば教えてください。

2.

innodb に変更方法の記述先があれば教えてください。

Re: innodb への変更

Posted: 2015年4月16日(木) 17:19
by soushi
MODXデモサイトはmysql 5.6系を利用しているので、試しにInnodbに変更してみました。

コード: 全て選択

mysql> ALTER TABLE modx_site_tmplvar_contentvalues ENGINE=InnoDB;
Query OK, 0 rows affected (0.15 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table modx_site_tmplvar_contentvalues \G
*************************** 1. row ***************************
       Table: modx_site_tmplvar_contentvalues
Create Table: CREATE TABLE `modx_site_tmplvar_contentvalues` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `tmplvarid` int(10) NOT NULL DEFAULT '0' COMMENT 'Template Variable id',
  `contentid` int(10) NOT NULL DEFAULT '0' COMMENT 'Site Content Id',
  `value` mediumtext,
  PRIMARY KEY (`id`),
  KEY `idx_tmplvarid` (`tmplvarid`),
  KEY `idx_id` (`contentid`),
  FULLTEXT KEY `value_ft_idx` (`value`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Site Template Variables Content Values Link Table'
1 row in set (0.00 sec)
特にエラー無く変更コマンドが完了しました。

また、報告頂いている内容を見る限り、DBはMySQLではなくMariaDBを利用しているようです。
手元に同じMariaDB5.5系があったので試したみたら「The used table type doesn't support FULLTEXT indexes」と同じエラーになりました。
ちなみにMariaDBの10.0系もあったので同じように試してみたところ、こちらはInnoDBに変更ができました。

上記結果から、利用しているDBをMySQL5.6以上、もしくはMariaDB10.0以上に変更して再度試していただけますでしょうか。

あと実際に動くか試したわけではないですが、全文検索エンジンのgroonga/mroongaを導入してラッパーモードを利用すればMariaDB5.5系でもFULLTEXTが利用できると思います。
(この場合、groongaの全文検索機能を使う事になります)

Re: innodb への変更

Posted: 2015年4月16日(木) 18:34
by iwa
soushi 様

確認いただき、ありがとうございます。

CentOS7 の標準は MariaDB 5.5 なのでスルっとはいかないようですね。

MySQL 5.6/ MariaDB 10.x についてはメンテナンスの事を考えると、手を出しづらいので、

FULL TEXT インデックスを使用して MyISAM で運用する
FULL TEXT インデックスを使用せず InnoDB で運用する

のどちらかになりそうです。

FULL TEXT については
* テンプレート変数値を全文検索
* リソースの pagetitle,description,content を全文検索
のインデックスが作成されているようです。

テンプレート変数の全文検索処理がどこで行っているかはわかりませんでしたが、リソースの場合は、管理画面の検索機能で使われているようでした。

管理画面が遅くなるだけなら無視できるかなーとも思っています。

Re: innodb への変更

Posted: 2015年4月16日(木) 19:35
by yama
バックアップ機能に軽い不具合が発生するかも?画面の表示が一部乱れるだけだと思いますが、いちおう確認いただけますでしょうか?

Re: innodb への変更

Posted: 2015年4月17日(金) 08:59
by soushi
MySQLに関してはrpmで提供されているので、こちらを使えばメンテナンスもさほど手はかからないと思います。
リポジトリも公開されているので登録すればyumコマンドでコントロール可能です。

http://dev.mysql.com/downloads/repo/

サポートにCentOSはないですが、RHELがあるのでたぶん動く…と思います(未検証)。
yama さんが書きました:バックアップ機能に軽い不具合が発生するかも?画面の表示が一部乱れるだけだと思いますが、いちおう確認いただけますでしょうか?
デモサイトのテーブルを全てInnoDBに変更してバックアップ&リストアを試してみました。
試した感じ大丈夫そうです。
一応利用したデモサイトのURLを連絡しておきます。

http://150417083448-10621.evo.demo.modx.jp/

Re: innodb への変更

Posted: 2015年4月17日(金) 10:51
by yama
http://150417083448-10621.evo.demo.modx ... frame=main
テーブルのサイズ取得がうまくいってないみたい。ないならないで特に困る情報でもないですが

Re: innodb への変更

Posted: 2015年4月17日(金) 11:23
by iwa
yama 様

いつもお手間を掛けます。

MySQL のパッケージの件、ありがとうございます。今後の参考にいたします。
私もたぶん、CentOS でも動作すると思います。しかし、これを使うと、RedHat へのおんぶにだっこが薄れてしまうので。。

tablesstatus スニペットでの動作確認させていただきました。

手動バックアップでの表示上の問題ですね。ありがとうございます。

しがらみが多いので、 MariaDB 5.5 + innodb (FULL TEXT インデックスなし) で試してみます。

ちなみに、 LIKE で grep すると以下のところで利用されるようでした。

> manager/processors/delete_content.processor.php
削除されるとき、参照しているリソースをリストアップし、警告

> manager/actions/search.static.php
検索キーワードで一覧を表示

> manager/actions/resource_selector.static.php
Resource Selector で一覧を表示