<div dir="ltr">ご連絡いただいたということでありがとうございます。<div><br></div><div>今わかっているところでいいますと、MariaDBがPARTITIONに対するFULLTEXTをサポートしていないのが原因のようです。</div><div>SpiderエンジンはPARTITIONだと1対多の複数サーバへシャーディングが行えるので便利なのですが、</div><div>FULLTEXTを設定する場合はCONNECTIONでの1対1のみのようです。</div><div><br></div><div>例:</div><div>1.パーティションはFULLTEXTをサポートしていない。</div><div>(略)</div><div><div>  FULLTEXT INDEX `js_index` (`t_name`,`t_text`)</div><div>) ENGINE = SPIDER DEFAULT CHARSET=utf8</div><div>PARTITION BY KEY() (</div><div>  PARTITION p1 comment &#39;server &quot;svdb1&quot;, table &quot;tset&quot;&#39;,</div><div>  PARTITION p2 comment &#39;server &quot;svdb2&quot;, table &quot;test&quot;&#39;,</div><div>  PARTITION p3 comment &#39;server &quot;svdb3&quot;, table &quot;test&quot;&#39;,</div><div>  PARTITION p4 comment &#39;server &quot;svdb4&quot;, table &quot;test&quot;&#39;,</div><div>  PARTITION p5 comment &#39;server &quot;svdb5&quot;, table &quot;test&quot;&#39;</div><div>);</div></div><div><br></div><div>2.コネクションだとテーブルが作成できる。</div><div>(略)</div><div><div>  FULLTEXT INDEX `js_index` (`t_name`,`t_text`)</div><div>) ENGINE = SPIDER DEFAULT CHARSET=utf8</div></div><div><div>CONNECTION &#39;host &quot;192.168.0.2&quot;, port &quot;3306&quot;, user &quot;root&quot;, password &quot;pass&quot;, database &quot;test_db&quot;, table &quot;test&quot;&#39;;</div></div><div><br></div><div><br></div><div>カスタマイズ版のMariaDBだとパーティションでのFULLTEXTに対応しているみたいですが、</div><div>2014年でアップデートが止まってるので先々の不安がある感じしてます。</div><div><br></div><div><br></div><div>またそのほか、強引な手法でコネクションにて分散しているDB分のテーブルを作成し、unionでつないでみましたが、</div><div>分散分の合計が処理時間となるため、イメージしてたよりも少し重たいなという印象です。</div><div><div><br></div><div>例:</div><div>db1:0.2秒</div></div><div><div>db2:0.2秒</div></div><div><div>db3:0.2秒</div></div><div><div>db4:0.2秒</div></div><div><div>db5:0.2秒</div></div><div><br></div><div>これらの合計で、検索結果に1秒以上かかってしまう。</div><div><br></div><div><br></div><div>以下はテストしてみたパターンです。</div><div><br></div><div>例:</div><div><div>CREATE TABLE `test1` (</div><div>  `t_uid` int(10) unsigned NOT NULL AUTO_INCREMENT,</div><div>  `t_name` varchar(100) DEFAULT &#39;&#39;,</div><div>  `t_text` text,</div><div>  </div><div>  FULLTEXT INDEX `js_index` (`t_name`,`t_text`)</div><div>) ENGINE = SPIDER DEFAULT CHARSET=utf8</div><div>CONNECTION &#39;host &quot;192.168.0.2&quot;, port &quot;3306&quot;, user &quot;root&quot;, password &quot;pass&quot;, database &quot;test_db&quot;, table &quot;test&quot;&#39;;</div><div><br></div><div>CREATE TABLE `test2` (</div><div>  `t_uid` int(10) unsigned NOT NULL AUTO_INCREMENT,</div><div>  `t_name` varchar(100) DEFAULT &#39;&#39;,</div><div>  `t_text` text,</div><div>  </div><div>  FULLTEXT INDEX `js_index` (`t_name`,`t_text`)</div><div>) ENGINE = SPIDER DEFAULT CHARSET=utf8</div><div>CONNECTION &#39;host &quot;192.168.0.3&quot;, port &quot;3306&quot;, user &quot;root&quot;, password &quot;pass&quot;, database &quot;test_db&quot;, table &quot;test&quot;&#39;;</div><div><br></div><div>CREATE TABLE `test3` (</div><div>  `t_uid` int(10) unsigned NOT NULL AUTO_INCREMENT,</div><div>  `t_name` varchar(100) DEFAULT &#39;&#39;,</div><div>  `t_text` text,</div><div>  </div><div>  FULLTEXT INDEX `js_index` (`t_name`,`t_text`)</div><div>) ENGINE = SPIDER DEFAULT CHARSET=utf8</div><div>CONNECTION &#39;host &quot;192.168.0.4&quot;, port &quot;3306&quot;, user &quot;root&quot;, password &quot;pass&quot;, database &quot;test_db&quot;, table &quot;test&quot;&#39;;</div><div><br></div><div>(略)</div><div><br></div><div>・クエリー発行</div><div><div>SELECT t_all.ip, t_all.t_name FROM</div><div>(</div><div>(SELECT &#39;192.168.0,2&#39; as ip, t_uid, t_name, t_text FROM test1 WHERE MATCH(t_name,t_text) AGAINST(&#39;検索してみた&#39; IN BOOLEAN MODE) ORDER BY MATCH(t_name,t_text) AGAINST(&#39;検索してみた&#39; IN BOOLEAN MODE) DESC LIMIT 0, 10)</div><div>UNION ALL</div><div>(SELECT &#39;192.168.0,3&#39; as ip, t_uid, t_name, t_text FROM test2 WHERE MATCH(t_name,t_text) AGAINST(&#39;検索してみた&#39; IN BOOLEAN MODE) ORDER BY MATCH(t_name,t_text) AGAINST(&#39;検索してみた&#39; IN BOOLEAN MODE) DESC LIMIT 0, 10)</div><div>UNION ALL</div><div>(SELECT &#39;192.168.0,4&#39; as ip, t_uid, t_name, t_text FROM test3 WHERE MATCH(t_name,t_text) AGAINST(&#39;検索してみた&#39; IN BOOLEAN MODE) ORDER BY MATCH(t_name,t_text) AGAINST(&#39;検索してみた&#39; IN BOOLEAN MODE) DESC LIMIT 0, 10)</div><div>UNION ALL</div><div>(SELECT &#39;192.168.0,5&#39; as ip, t_uid, t_name, t_text FROM test4 WHERE MATCH(t_name,t_text) AGAINST(&#39;検索してみた&#39; IN BOOLEAN MODE) ORDER BY MATCH(t_name,t_text) AGAINST(&#39;検索してみた&#39; IN BOOLEAN MODE) DESC LIMIT 0, 10)</div><div>UNION ALL</div><div>(SELECT &#39;192.168.0,6&#39; as ip, t_uid, t_name, t_text FROM test5 WHERE MATCH(t_name,t_text) AGAINST(&#39;検索してみた&#39; IN BOOLEAN MODE) ORDER BY MATCH(t_name,t_text) AGAINST(&#39;検索してみた&#39; IN BOOLEAN MODE) DESC LIMIT 0, 10)</div><div>) AS t_all</div><div>ORDER BY MATCH(t_all.t_name, t_all.t_text) AGAINST(&#39;検索してみた&#39; IN BOOLEAN MODE) DESC</div><div>LIMIT 0, 10</div></div></div><div><br></div><div><br></div><div>カラムにipアドレスを入れてるは取得後にipのみをカウントし、該当サーバで3件取得できた場合には、</div><div>limit 4, 10とする。<br></div><div><br></div><div>該当サーバにて0件であった場合、</div><div><br></div><div>limit 0, 10とする、というようにし、データの取得漏れがないようにするだけのためのものです。<br></div><div>ただこのパターンでは分散すればするほど処理が加算されていき、結果的に処理時間が増大してしまうなというのが</div><div>いま現状の状況です。</div><div><br></div><div>現状、まだ未解決のため何か情報がありましたらよろしくお願いします。</div><div><br></div></div>