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

InnoDB:MySQLのACID準拠のストレージエンジン

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

2
Percona対MySQL
パーコナとは? MySQLとの違いは何ですか? ストックMySQLからPerconaへの切り替え(またはアップグレード)をいつ検討する必要がありますか? 状況にいくつかの仕様を追加するために、InnoDB(Perconaは多くの最適化を行っていると理解しています)をほぼ排他的に使用し、広範な外部キー制約といくつかのストアドプロシージャを使用します。 現在、MySQLはクエリの最適化が不十分であるため、3〜4の結合を超えるクエリはパフォーマンスを改善するためにSTRAIGHT結合で明示的に構築する必要があります。

6
InnoDBテーブルが変更されたかどうかを確認する最速の方法
私のアプリケーションは非常にデータベース集約型です。現在、MySQL 5.5.19を実行しており、MyISAMを使用していますが、InnoDBに移行中です。残っている唯一の問題は、チェックサムのパフォーマンスです。 私のアプリケーションはCHECKSUM TABLE、ピーク時に毎秒約500-1000 ステートメントを実行します。これは、クライアントGUIが変更のためにデータベースを絶えずポーリングしているためです(監視システムであるため、非常に応答性が高く、高速である必要があります)。 MyISAMには、テーブルの修正時に事前計算された非常に高速なライブチェックサムがあります。ただし、InnoDBにはそのようなものはありません。だから、非常にCHECKSUM TABLE遅いです。 テーブルの最終更新時間を確認できるようにしたいと考えています。残念ながら、これはInnoDBでも利用できません。テストでは、アプリケーションのパフォーマンスが大幅に低下することが示されているため、私は今立ち往生しています。 テーブルを更新するコードの行が多すぎるため、アプリケーションにロジックを実装してテーブルの変更を記録することは問題外です。 InnoDBテーブルの変更を検出する高速な方法はありますか?

1
MySQL innodb_flush_method変数に関する説明
まず、私はハードディスクの内部動作について非常に無知であると認めることから始めましょう。そのため、変数innodb_flush_methodのマニュアルを読み終えると、混乱しました。O_DSYNCとO_DIRECTの違いと、それがデータベースサーバーのパフォーマンスの問題であるかどうかを知る方法について、素人の言葉で説明してもらえますか。 私のセットアップに関するいくつかの統計:MySQL 5.1.49-64bitを実行しているMac OSX 10.6(アーキテクチャが古いため、32ビットカーネル)(メモリを使用できることを望みます)。8GB RAM、最大6GBのinnodbデータ/インデックス。
21 mysql  innodb 

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

1
MySQL Explainのフィルター処理の意味は何ですか?
ここにMySQLドキュメントで説明されているように: フィルター処理された列は、テーブル条件によってフィルター処理されるテーブル行の推定パーセンテージを示します。つまり、rowsは調べた行の推定数を示し、rows×Filtered / 100は前のテーブルと結合される行数を示します。MySQL 5.7.3より前では、EXPLAIN EXTENDEDを使用すると、この列が表示されます。MySQL 5.7.3の時点では、拡張出力はデフォルトで有効になっており、EXTENDEDキーワードは不要です。 まだわかりません。ここで「フィルタリング」の意味は何ですか?このコラムからどのような情報を入手できますか? たとえば、クエリを開始すると、一部のクエリには100が表示され、他のクエリには18または100未満の値が表示されます。 +-------------+-------+--------+---------+---------+------+----------+ | select_type | table | type | key | key_len | rows | filtered | +-------------+-------+--------+---------+---------+------+----------+ | PRIMARY | a | range | search | 4 | 174 | 18.00 | <-- | PRIMARY | b | eq_ref | PRIMARY …

3
実稼働環境でのINTからBIGINTへのALTER主キー列(MySQL 5.6.19a)
実稼働データベースのいくつかのINNODBテーブルは、2147483647のINT AUTO_INCREMENT制限に達しようとしているため、BIGINTに変更する必要があります。そうしないと、書き込みが失敗し始めます。 テーブルは、Amazon RDSで実行されている実稼働MySQL 5.6.19aデータベースにあります。 常に発生しているプロダクションの読み取りと挿入を中断せずに、このようなALTERを実行するにはどうすればよいですか? ALTER TABLE MYTABLECHANGE id idBIGINT NOT NULL AUTO_INCREMENT; 表のDDLは次のとおりです。 CREATE TABLE `MYTABLE` ( `id` int(11) NOT NULL AUTO_INCREMENT, `siteId` int(11) NOT NULL, `filter` varchar(10) NOT NULL DEFAULT 'ALL', `date` varchar(10) NOT NULL, `cards` varchar(250) NOT NULL, `apples` varchar(45) NOT NULL, `carrots` varchar(45) NOT NULL, …
20 mysql  innodb 

4
INNODBバッファープールの統計情報を理解する
mysqlドキュメンテーションのこのページを読んだ後、現在のInnoDBの使用法を理解しようとしました。現在、バッファプールに6GBのRAMを割り当てています。データベースのサイズはほぼ同じです。次に、show engine innodb status\Gv5.5の実行結果を示します。 ---------------------- BUFFER POOL AND MEMORY ---------------------- Total memory allocated 6593445888; in additional pool allocated 0 Dictionary memory allocated 1758417 Buffer pool size 393215 Free buffers 853 Database pages 360515 Old database pages 133060 Modified db pages 300 Pending reads 0 Pending writes: LRU 0, flush list …

2
innodb_buffer_poolを設定する理由とその理由
170GBのInnoDBインデックスとデータがあります。 パフォーマンスを向上させるために、innodb_buffer_poolサイズを再調整する必要があります。InnoDBテーブルの最大テーブルサイズ(インデックス+データ)は28GBです。 そのため、innodb_buffer_poolの最適なサイズはどうでしょうか。 更新 このローカルデータベースをec2に移行するので、innodbの現在の統計に従ってRAMを設定します。そのため、使用可能なRAMを確保するためにバッファープールのサイズが必要です。 テーブルごとのファイルが有効になっています。 Linuxマシンを使用しています。
20 mysql  innodb 

3
InnoDBが行カウントを保存しないのはなぜですか?
InnoDBをエンジンとして使用するテーブルではSELECT COUNT(*) FROM mytable、特にテーブルが大きくなり、そのクエリの実行中に一定の行の挿入/削除がある場合、クエリは非常に不正確で非常に遅いことを誰もが知っています。 私が理解したように、InnoDBは行数を内部変数に保存しません。これがこの問題の原因です。 私の質問は:なぜこれがそうなのか?そのような情報を保存するのは難しいでしょうか?これは非常に多くの状況で知っておくべき重要な情報です。そのような内部カウントが実装されるかどうか私が見る唯一の難しさは、トランザクションが関与している場合です:トランザクションがコミットされていない場合、それによって挿入された行をカウントしますか? PS:私はDBの専門家ではなく、MySQLを単純な趣味として持っているだけの人です。だから、私がばかげたことを尋ねただけなら、過度に批判的にならないでください:D。
19 mysql  innodb  count 

3
innodb_file_per_tableはお勧めですか?
テーブルの1つだけが数百万行に成長し、残りは100万行未満になるアプリケーションがあります。それでは、innodb_file_per_tableを使用するか、1つの.ibdのままにしておくべきでしょうか。実行する結合があるときに、より多くのディスクアクセスが必要なので、私はそれと一緒に行かないと言ういくつかの記事を読みましたか?レポート生成のために、このテーブルと他のテーブルを結合します。
19 mysql  innodb 

1
ENUM()リストを変更することは可能ですか?
ENUM()リストの変更が不可能かどうか確信が持てなかったので、テストを行いました。MySQL v5.1.58では、タイプENUM( 'yes'、 'no')の 'bool'という1つのフィールドを含むテストInnoDBテーブルを作成しました。 それから私は実行しました... ALTER TABLE `test` CHANGE `bool` `bool` ENUM( 'yes', 'no', 'maybe' ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL ...そしてそれは働いた。 私は何か間違ったことをしましたか?dbエンジンに依存していますか?誰もがENUM()リストの変更は不可能だと言うのはなぜですか?例えば。こちらhttp://komlenic.com/244/8-reasons-why-mysqls-enum-data-type-is-evil/
19 mysql  innodb 

4
innodb_buffer_pool_sizeとinnodb_log_file_sizeを増やした後、mysqlが起動しない
私はここで、このソリューションを、次の午前/programming/3927690/howto-clean-a-mysql-innodb-storage-engine/4056261#comment14041132_4056261と私を増加させようとしたinnodb_buffer_pool_size4G以降1G(1024Mも)にログファイルのサイズに追加されますが、mysqlはこれらの値で開始しません。512Mに戻すと、mysqlは正常に起動します。 どうすれば解決できますか?私のサーバーは16GBのもので、Webmin sysinfoによると: Real memory 15.62 GB total, 3.13 GB used 一方、エラーログも見つかりました。 120529 10:29:32 pidファイル/var/run/mysqld/mysqld.pidからのmysqld_safe mysqldが終了しました 120529 10:29:33 mysqld_safe / var / lib / mysqlのデータベースを使用してmysqldデーモンを起動する 120529 10:29:33 [注]プラグイン「FEDERATED」は無効になっています。 120529 10:29:33 InnoDB:InnoDBメモリヒープが無効になっています 120529 10:29:33 InnoDB:ミューテックスとrw_locksはGCCアトミックビルトインを使用します 120529 10:29:33 InnoDB:圧縮テーブルはzlib 1.2.3を使用します 120529 10:29:33 InnoDB:LinuxネイティブAIOの使用 120529 10:29:33 InnoDB:バッファープールの初期化、サイズ= 1.0G 120529 10:29:33 InnoDB:バッファープールの初期化が完了しました InnoDB:エラー:ログファイル./ib_logfile0は異なるサイズ0 134217728バイトです …

2
MySql-ライブデータベースのinnodb_file_per_tableの変更
私は大規模なMySql DB(150GB)を持っinnodb_file_per_tableてoffいますが、DB全体が1つのファイル(ibdata1)でホストされるように設定されていることに気づきました。アクティブ化innodb_file_per_tableして、DBをいくつかのファイルにさかのぼって分割したいのですが、これを行う最良の方法は何ですか?
18 mysql  innodb  my.cnf 

4
数時間オフラインにならずに、66,862,521行のテーブルをMyISAMからInnoDBに変換するにはどうすればよいですか?
アプリケーションをオフラインにすることなく、巨大なMyISAMテーブルをInnoDBに変換することは可能ですか?そのテーブルに毎秒数行を挿入する必要がありますが、約2分間中断することが可能です。 明らかにALTER TABLE ... engine = innodbは機能しません。そのため、innodbエンジンを使用して新しいテーブルを作成し、その中にコンテンツをコピーする計画がありました。最後に、アプリケーションログスレッドとRENAME TABLEを一時停止します。 残念ながら、100行の小さなバッチでコピーを行っても、しばらくするとかなりの遅れが生じます。 編集:既存の行が変更されることはありません。このテーブルはロギングに使用されます。
18 mysql  innodb 

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