実現したいこと
漠然とした質問で申し訳ありません。
XAMMP:MariDBのデータをPHPでSQL処理し、円グラフを描かせている。
MariaDBのストレージエンジンはデフォルトのInnoDBであるが、RocksDBに変更して処理速度を上げたい。
参考文献:https://iifx.dev/ja/articles/337163604
発生している問題・分からないこと
既に動作している環境にRocksDBのDLLを組込めば良いらしいが、ネット上の情報を基に色々試しても上手く行きません。
XAMMP環境下で動かしているのが原因かもしれませんが、よく分かりません。
SQLも初心者なので、1処理毎にtemporary table を作成して SSDに書込んでいる状況なので処理が遅いと思います。
本来ならば、SQLプログラムを整理して、できるだけストレージに書込まないように処理をすべきなのでしょうが、どこまでSQL文を複雑化していいのかが分かっていません。
当該プログラムは複数のユーザーが同時に利用する状態なので、
既にインストールされているMEMORYエンジンは使えないような気がします。
INDEXも付与して比較しましたが、付与の仕方が悪いのか変化無し。
先ずは ストレージエンジンを高速化して処理速度が上がるか確認したいです。
該当のソースコード
1200行程度あり、あまりにも長く・お粗末なので記載できません・・・・・ 一部のみ記載致します。 こんなレベルで多数の temp table に書込みながら進めています。 不要になった temp table はできるだけ早く DROP で削除しています。 $stt3 = "DROP table if exists p_data_temp2;"; $result3 = $db->query($stt3); // 2025.03.04 mid = {$machine} 追加 $stt2 = "create temporary table p_data_temp2 as select * from p_data_temp where datetime like '{$where_month}%' and mid = {$machine} order by datetime ASC;"; $temp_table = $db->query($stt2); // 2025.04.29 for speed up /////////////////////////////////////////////////////// $stt2_1 = "create index d_indx on p_data_temp2(datetime);"; $result2_1 = $db->query($stt2_1); ////////////////////////////////////////////////////////////////////////////////// $stt2_2 = "insert into p_data_temp2 select * from p_data_temp where datetime like '{$where_month}%' and mid = {$machine} order by datetime ASC;"; $result2_2 = $db->query($stt2_2); /////////////////////////////////////////////////////////////////////////////////// $sql70 = "DROP table if exists p_data_temp7;"; $result70 = $db->query($sql70); // 2024.02.13 p_data_temp7 作成 p_data_temp2 の datetime をコピーし、1行目を削除する // change for MariaDB & id INT PRIMARY KEY AUTO_INCREMENT $sql71 = "create temporary table p_data_temp7( id INT PRIMARY KEY AUTO_INCREMENT, new_dd varchar(19), mid INT );"; $result71 = $db->query($sql71); //# 2024.02.14 add (new_dd) // 2024.02.28 p_data_temp2 から抽出 に変更 // 2025.02.27 change for MariaDB $sql7 = "insert into p_data_temp7(new_dd, mid) select datetime, mid from p_data_temp2 order by datetime ASC;"; $result7 = $db->query($sql7);
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
ストレージエンジンを ha_rocksdb に指定したところ以下エラー発生
ERROR 1126 (HY000): Can't open shared library 'C:\xampp\mysql\lib\plugin\ha_rocksdb.dll'
(errno: 2, The specified module could not be found.
MariaDBのコマンドラインにて dll 保存場所を聞くと
C:\xampp\mysql\lib\plugin
と答えるが、lib ディレクトリ自体無し
https://mariadb.com/kb/en/getting-started-with-myrocks/
に従って ha_rocksdb プラグインをインストールしようとしているが
INSTALL SONAME も INSTALL PLUGIN も実施できない。
補足

あなたの回答
tips
プレビュー