タグ付けされた質問 「myisam」

MyISAMは、MySQLの非トランザクションストレージエンジンです。高速な保存と検索、および全文検索機能を提供します。さらに、これは、MySQL 5.5より前のバージョンのデフォルトのストレージエンジンタイプです。


5
MySQL innodb変数「innodb_log_file_size」を安全に変更する方法は?
だから、私はInnoDBをチューニングするのはかなり新しいです。MyIsamからInnoDBに(必要に応じて)テーブルをゆっくりと変更しています。innodbに約100MBあるので、innodb_buffer_pool_size変数を128MB に増やしました。 mysql> show variables like 'innodb_buffer%'; +-------------------------+-----------+ | Variable_name | Value | +-------------------------+-----------+ | innodb_buffer_pool_size | 134217728 | +-------------------------+-----------+ 1 row in set (0.00 sec) innodb_log_file_size値を変更しようとしたとき(mysqlのinnodb構成ページのコメントの my.cnfの例では、ログファイルのサイズをバッファーサイズの25%に変更します。したがって、my.cnfは次のようになります。 # innodb innodb_buffer_pool_size = 128M innodb_log_file_size = 32M サーバーを再起動すると、次のエラーが表示されます。 110216 9:48:41 InnoDB:バッファープールの初期化、サイズ= 128.0M 110216 9:48:41 InnoDB:バッファープールの初期化の完了 InnoDB:エラー:ログファイル./ib_logfile0は異なるサイズ0 5242880バイト InnoDB:で指定されたものより.cnfファイル0 33554432バイト! 110216 9:48:41 ...
105 mysql  innodb  myisam  logs 


3
InnoDBがすべてのデータベースを1つのファイルに保存するのはなぜですか?
MyISAMを使用して各テーブルを対応するファイルに保存すると便利でした。InnoDBは多くの面で進歩を遂げましたが、なぜInnoDBがすべてのデータベースを1つのファイルに保存するのか疑問に思います(ibdata1デフォルト)。 InnoDBがテーブルの個々のインデックスファイルによってファイル内のデータの場所をマップすることは理解していますが、1つのファイルにすべてのデータが混在する理由はわかりません。さらに重要なのは、なぜサーバー上のすべてのデータベースのデータを混合するのですか? MyISAMの興味深い機能は、データベースフォルダーを別のマシンにコピー/貼り付けしてから、データベースを(ダンプなしで)使用できることです。


5
InnoDBでの単純なSELECTがMyISAMよりも遅いのはなぜですか?
私にはかなり厄介な問題があります。メインデータベースエンジンとしてINNODBを使用し、冗長性のためにgalera-clusterを使用するために前者が必要なため、MyISAMを放棄します。 newbb_postテーブルをコピー(説明が続きます)という新しいテーブルにコピーnewbb_innopostし、InnoDBに変更しました。現在、テーブルには5,390,146それぞれエントリがあります。 新しく起動したデータベースでこれらの選択を実行すると(この時点でキャッシュは関係しません!)、データベースは次の結果を生成します(完全な出力は省略します。結果の並べ替えをデータベースに依頼しないことに注意してください)。 SELECT post.postid、post.attach FROM newbb_post AS post WHERE post.threadid = 51506; 。 。 | 5401593 | 0 | | 5401634 | 0 | + --------- + -------- + セット内の62510行(0.13秒) SELECT post.postid、post.attach FROM newbb_innopost AS post WHERE post.threadid = 51506; 。 。 | 5397410 | 0 | | 5397883 ...

6
MySQL単一テーブルの1,000万行以上をできるだけ速く更新する方法は?
ほとんどのテーブルでMySQL 5.6とInnoDBストレージエンジンを使用します。InnoDBバッファープールのサイズは15 GBで、Innodb DB +インデックスは約10 GBです。サーバーには32GBのRAMがあり、Cent OS 7 x64を実行しています。 約1,000万件以上のレコードを含む1つの大きなテーブルがあります。 24時間ごとにリモートサーバーから更新されたダンプファイルを取得します。ファイルはcsv形式です。私はそのフォーマットを制御できません。ファイルは最大750 MBです。MyISAMテーブルに行ごとにデータを挿入しようとしましたが、35分かかりました。 ファイルから10-12のうち1行につき3つの値のみを取得し、データベースで更新する必要があります。 このようなことを達成する最良の方法は何ですか? これを毎日する必要があります。 現在、Flowは次のようになっています。 mysqli_begin_transaction ファイルを1行ずつ読み込む 各レコードを行ごとに更新します。 mysqli_commit 上記の操作を完了するには約30〜40分かかりますが、これを実行している間、他の更新が行われているため、 ロック待機タイムアウトを超過しました。トランザクションを再開してみてください アップデート1 を使用して新しいテーブルにデータを読み込みますLOAD DATA LOCAL INFILE。MyISAM 38.93 secでは、InnoDBでは7分5.21秒かかりました。それから私はやった: UPDATE table1 t1, table2 t2 SET t1.field1 = t2.field1, t1.field2 = t2.field2, t1.field3 = t2.field3 WHERE t1.field10 = t2.field10 Query OK, ...

3
テーブルのパーティション分割はどのように役立ちますか?
テーブルパーティションの長所と短所の概念をつかむのが困難です。8つのテーブルを持つプロジェクトの作業を開始しようとしていますが、そのうちの1つは1億8千万から2億6千万件のレコードを保持するメインデータテーブルになります。適切にインデックスが付けられたテーブルになるので、9〜13個のテーブルを作成する必要があるこの方法で、テーブルレコードを2,000万に制限することを考えています。 しかし、同じマシン(32GB RAM)に座っているため、パフォーマンスがどのように改善されるかについてはよくわかりません。 私はMySQLを使用しており、テーブルはMyISAMであり、大きなテーブルにはidフィールドにインデックスがあり、フルテキスト検索などの複雑さはありません。 また、テーブルのパーティション分割とデータベースのパーティション分割についても明らかにしてください。


6
30,000,000行のテーブルでDELETEコマンドが完了しない
私はデータベースを継承しており、クリーンアップと高速化を目指しています。私は、30,000,000行を含むテーブルを持っています。その多くは、プログラマーに代わってエラーが原因で挿入されたジャンクデータです。最適化された新しいインデックスを追加する前に、テーブルをMyISAMからInnoDBに変換し、ジャンクデータを含む多くの行を削除しようとしています。 データベースはMySQL 5.0であり、サーバーへのルートアクセス権があります。最初にこれらのコマンドをAdminerで実行し、次にphpMyAdminで実行しましたが、どちらも同じ結果になりました。 私が実行しているコマンドは、 DELETE FROM `tablename` WHERE `columnname` LIKE '-%' 基本的に、ダッシュで始まるこの列のすべてを削除します-。 約3〜5分間実行され、プロセスリストを表示すると消えます。 それから走ります SELECT * FROM `tablename` WHERE `columnname` LIKE '-%' そして何百万もの行を返します。 削除ステートメントが完了しないのはなぜですか? PS、MySQL 5.0が古くなっていることに気付いています。私は、DBをMySQL 5.6 w InnoDB(おそらくMariaDB 10 w XtraDB)に移行する作業を行っていますが、それが起こるまでは、DBをそのまま使用して答えを探しています。 - 編集が削除されました。回答を参照してください。

3
頻繁なクエリキャッシュの無効化のオーバーヘッドは価値がありますか?
現在、主に多くのテーブルで実行されているINSERT、DELETE、UPDATEステートメントの数が多いため、クエリキャッシュから多数の無効化が発生しているMySQLデータベースで作業しています。 私が判断しようとしているのは、これらのテーブルに対して実行されているSELECTステートメントにクエリキャッシュを使用できるようにすることの利点があるかどうかです。それらは非常に迅速に無効化されるため、これらのテーブルのSELECTステートメントでSQL_NO_CACHEを使用することが最良の方法であると思われます。 頻繁な無効化のオーバーヘッドは価値がありますか? 編集:以下のユーザー@RolandoMySQLDBAのリクエストに応じて、MyISAMおよびINNODBに関する情報を以下に示します。 InnoDB データサイズ:177.414 GB インデックスサイズ:114.792 GB テーブルサイズ:292.205 GB MyISAM データサイズ:379.762 GB インデックスサイズ:80.681 GB テーブルサイズ:460.443 GB 追加情報: バージョン:5.0.85 query_cache_limit:1048576 query_cache_min_res_unit:4096 query_cache_size:104857600 query_cache_type:ON query_cache_wlock_invalidate:オフ innodb_buffer_pool_size:8841592832 24GBのRAM

3
同じサーバーでInnoDBとMyISAMテーブルを混在させることは一般的な習慣ですか?
8GBのRAMを搭載したサーバー上で実行される約4.5GBの単一のデータベースがあります。テーブルの大部分はMyIsam(約4.3GB)ですが、すぐにその一部をInnoDBに変換する予定です。(最初は最も書き込み量の多いテーブルに焦点を当てた遅いプロセスになります)。 両方のタイプのストレージエンジンが存在する専用サーバーの実行に問題はありますか?

1
mysqldumpはデフォルトでインデックスをエクスポートしますか?
私は、mysqldumpをして少しいじっし、それが輸出指数を(ない場合、私は、思っていたFULLTEXT、INDEXデフォルトでは、...)。私はそれを読んで、このオプションを見つけました: --disable-keys, -K 実際にインデックスをエクスポートすることを示唆しています。しかし、私は自分の解釈を信用したくありません。そして、私はそれが正しいことを確認したいです(または間違っています;-))。誰でもそれを確認できますか?

3
MyISAMとInnoDBのベスト
InnoDBで、同時実行パフォーマンスの利点を得ながら、RAMの制限のためにクラスター化インデックスの代わりにMyISAMと同じインデックスを使用することは可能ですか?

2
MyISAMからInnoDBへのオンライン変換後に行が失われる
MyISAMからInnoDBに変換したいかなり小さなデータベースがあります。データベース初心者であるため、サイトをダウンさせることなく変換(alter tableを使用)しました。 変換が完了したので、多くの断続的な行が欠落しているようです。これは、おそらく変換中の操作によるものですか?または、問題はどこか別の場所ですか?
16 mysql  innodb  myisam 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.