質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

2回答

738閲覧

mysql 全文検索用のインデックス作成手順について

yookoko

総合スコア62

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2019/07/25 00:40

現在稼働しているDBがあります。
対象テーブルは2万行、インデックスを作成するカラムは、平均8000文字が入っています。

全文検索の高速化しようと、以下でインデックスを作成したと考えています。

bash

1ALTER TABLE blog ADD FULLTEXT (content) WITH PARSER ngram;

以下のサイトで

https://dev.classmethod.jp/cloud/aws/amazon-rds-for-mysql-fulltext-search/

既存のテーブルに既に大容量のデータが入っているとインデックス処理による負荷増や、ディスク使用量増にご注意ください。

の記述がありますが、稼働中のDBにインデックス作成処理をする場合どのような注意点や手順が適切なのでしょうか?

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

稼働中のDBよりバックアップを取得して、別環境を構築して確認を行うのは基本ですから、未実施なら実施して下さい。

既存のテーブルに既に大容量のデータが入っているとインデックス処理による負荷増や、ディスク使用量増にご注意ください。

上記は、既存機能に対しての影響の話ですから、オンライン処理を実際に動作させてレスポンスに影響が無いかを確認したり、ディスク資源の見積もりを行ったりする必要があります。

稼働中環境にインデックスを作成する作業自体は、基本オンライン稼働を停止させて行うでしょうから、インデックス作成処理にかかる時間を事前に計測して、停止させる時間に問題が無い手順とする事です。

投稿2019/07/25 01:22

sazi

総合スコア25138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yookoko

2019/07/25 01:29

丁寧な回答ありがとうございます。非常に参考になりました。
guest

0

まずは稼働中ならトラブルをさけるために同じ構造のテーブルを
コピーして作ります。
より影響を少なくしたいのであればデータベース構造からコピーしても
いいでしょう。

コピーしたDBに対してインデックスを設定してみて処理完了に
どのくらい時間がかかるか検証してみて下さい

もし負荷が高いようなら、その間に参照されたりするとより過負荷になるので
一度メンテナンスのためにユーザーからのアクセスを禁止状態にして
処理をするとよいでしょう。

逆に数秒でおわるなら運用中のテーブルに対して行ってもさほど
問題は無いと思います

いずれにしろバックアップは取ってからやられたほうがよいですね

投稿2019/07/25 01:22

yambejp

総合スコア114572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yookoko

2019/07/25 01:30

どちらの方も参考になり両回答ともベストアンサーでしたので事務的にベストアンサーを選びました。申し訳ありません。丁寧な回答ありがとうございます。非常に参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問