3101 件中 541 - 550 件を表示
« 前の 10 件 | 次の 10 件 »
MySQLのMecabプラグインによる単語の解析(INNODB_FT_INDEX_TABLE)

MySQLのMECABによる最近つぶやかれている単語の解析

MySQLのMecabプラグインを利用して集計したデータを解析する過程で、INNODB_FT_INDEX_TABLEにて含まれている単語を確認し集計しようとしたが、
サーバーのスペックが低く集計中にハングしてしまったので、メモリーのINNODB_FT_INDEX_TABLEの内容をInnoDBテーブルに落として集計してみた。
もし、同様に形態素解析で解析されたワードを集計したいけれども、メモリー量が不足していて単語を集計出来ない場合の回避策として。参考までに。


root@localhost [(none)]> desc INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE;
+--------------+---------------------+------+-----+---------+-------+
| Field        | Type                | Null | Key | Default | Extra |
+--------------+---------------------+------+-----+---------+-------+
| WORD …
[さらに読む]
MySQL 8.0.20 のハッシュジョイン(Hash Join)を INDEX があるテーブルで試してみる

これは、こちらの記事の続編です。

MySQL 8.0.20 で強化されたハッシュジョイン(Hash Join)を試してみる

MySQL 8.0.18 で実装された時点で INDEX があるテーブルでは(普通に使うと)無効だったハッシュジョインですが、MySQL 8.0.20 で変化があったのかを確認してみます。

【参考】

MySQL 8.0.18のHASH JOINを試した(tom__bo’s Blog)

準備

先の記事で使った環境で、各テーブルに INDEX をADDします。

ADD_INDEX mysql> USE hashjoin_test; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A

Database changed mysql> ALTER TABLE t1 ADD INDEX (col1); Query OK, 0 rows affected (0.46 sec) Records: 0 Duplicates: 0 Warnings: 0

mysql> ALTER TABLE t2 ADD INDEX (col1); Query OK, 0 rows …

[さらに読む]
MySQL8.0.20で追加・変更されたパラメータを眺める

はじめに

MySQL8.0.20で追加・変更されたパラメータをなんとなく眺めてみました。

パラメータの説明については基本的にはドキュメントからの引用です。

変更されたパラメータ一覧

例によってとみたさんのパラメータ比較ツールをお借りしました。

Parameter 8.0.20 説明
binlog-transaction-compression FALSE バイナリログファイルに書き込まれる …
[さらに読む]
MySQL 8.0 で NOWAIT / SKIP LOCKED(いまさら)

こちらに引き続き、以前サポートされた機能の再発掘です。MySQL 8.0.1 でサポートされた機能なので CHECK 制約よりも古いです(笑)。

※配布開始 1 周年を迎えた「MySQL 8.0 の薄い本」を、8.0.20 対応版改訂を機にリニューアルし、実行例を増やすための記事です。はい。

「MySQL 8.0 の薄い本」を作って配っている話

NOWAIT / SKIP LOCKEDの使いどころ

トランザクション内で、

テーブルにある行の情報を取得する その行に対して更新を掛ける

場合には、

SELECT ... FOR UPDATEでロックを獲得する (取得した情報を加工するなどして)UPDATEする

という流れになりますが、他のトランザクションが先に当該行のロックを獲得していた場合、

[さらに読む]
MySQL 8.0.16 で実装された CHECK 制約を(いまさら)試してみる

MySQL 8.0.16 で(ようやく)実装された CHECK 制約について、いまさらですが試してみます。

※配布開始 1 周年を迎えた「MySQL 8.0 の薄い本」を、8.0.20 対応版改訂を機にリニューアルし、実行例を増やすための記事です。はい。

「MySQL 8.0 の薄い本」を作って配っている話

CHECK 制約とは

簡単に言うと「記述した条件式に合わない行の挿入・更新を防ぐ」ものです。

INSERT, UPDATE, REPLACE, LOAD DATA, LOAD XMLの実行時に評価される 評価の結果がFALSEの場合にエラーになる(行の挿入・更新が行われない)

なお MySQL 8.0 の場合、以下のようなものは条件式に記述できません。

CONNECTION_ID(), CURRENT_USER(), NOW()のような非決定性関数 …

[さらに読む]
MySQL 8.0.20 で強化されたハッシュジョイン(Hash Join)を試してみる

2020/04/27 にリリースされた MySQL 8.0.20 ではハッシュジョインが強化され、

等結合のINNER JOIN(MySQL 8.0.18 で実装済み)

のほかに、

等結合以外のINNER JOIN

セミジョイン(IN句によるサブクエリなど) アンチジョイン(NOT EXISTSによるサブクエリなど)

LEFT OUTER JOIN / RIGHT OUTER JOIN

MySQL の場合、RIGHT OUTER JOINは表の左右を入れ替えたLEFT OUTER JOINとして実行される

で利用できるようになりました。

8.2.1.4 Hash Join Optimization(MySQL 8.0 Reference Manual)

そこで、これらのケースで実行計画等がどう変わるのかを確認してみます。

テスト用のテーブル・SQL・データ等

テーブルと SQL はこちらのワークログを参考に、明らかに間違っている部分を修正

WL#2241: Hash join …

[さらに読む]
MySQLでのテーブルコピー(InnoDBとMyISAM)

MySQLでのテーブルコピーを考える

MySQLでテーブルコピー(同一インスタンス内とか別インスタンスとかあるけど)って意外とテストとかちょっとしたリカバリ作業用にしたくなりますよね。

というわけで、InnoDBMyISAM関連だけですが書き出してみました。

コピーパターン

[さらに読む]
Update for last week (2020-04-27~ 2020-05-03)

MySQL Weeklyでは1週間ごとにMySQLのrelease-note, bug, official blog, organizationによるblog, 個人のblogをまとめ紹介しています。 更新は月曜 10時(AM)です。先週一週間のMySQL関連の更新を再確認するのにご活用ください。

また、このブログ記事はGitHub上で管理されていますMySQL-weekly repository。Issue, pull-request歓迎です。(完全に同期できているわけではありません)

Release note

[さらに読む]
MySQL 8.0.20 でHASH JOINが効くケースが拡大した

TLDR;

  • MySQL 8.0.20 から INNER JOIN だけじゃなくて、Semi joinや Left/Right outer join でも HASH JOIN が使えるようになったよ
  • MySQL 8.0.20 では (EXPLAIN ANALYZEではなく)EXPLAIN でも、HASH JOINが使われているか、表示されるようになったよ
  • MySQL 8.0.19 から、optimizer_switch で HASH JOIN の OFF/ON がコントロールできなくなったよ

MySQL 8.0.20 Release Note

Hash joins are now used any time a nested block loop would be employed. This means that hash …

[さらに読む]
mrubyudf : C を書かずに Ruby だけで MySQL の UDF を作る

昨日はmrubyでMySQLのUDFを作ってみたんだけど、関数毎にCのプログラムを書くのがめんどくさいので、簡単なツールを作ってみた。

github.com

詳しくは README 参照。

fib.rb と fib.spec をこんな感じで作っておいて、

fib.rb

LONG_LONG_MAX = 9223372036854775807

def fib(n)
  b = 1
  c = 0
  n.times do
    a, b = b, c
    c = a + b
    raise 'Overflow' if c > LONG_LONG_MAX
  end
  c
end

fib.spec

MrubyUdf.function do |f|
  f.name = 'fib'           # 関数名は fib
  f.return_type = Integer  # 戻り値は Integer
  f.arguments = [          # 引数は一つで型は Integer
    Integer
  ]
end
% mrubyudf fib.spec

とやれば fib.so が出来上がるはず。 …

[さらに読む]
3101 件中 541 - 550 件を表示
« 前の 10 件 | 次の 10 件 »