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

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

1
InnoDBデータベースを削除するときのエラー
MySQLでデータベースを削除しようとしていますが、このエラーが発生するたびに ERROR 2013 (HY000): Lost connection to MySQL server during query rootとしてもログインします。 もともとは、再作成できない破損したテーブルがあったため、データベースを再作成することにしました。テーブルごとにinnodbファイルがありますが、それが重要かどうかはわかりません。 このデータベースを削除するにはどうすればよいですか?
8 mysql  innodb 

3
Mysqlはスワップの使用を開始するまでメモリをゆっくりと使用します
1 GBのRAMラックスペースデータベースサーバーを実行しています。なんらかの理由で約2日で、メモリ使用量は非常に少ないスワップの使用から100MBの使用に移行します。SQLを再起動しないと、より多くのスワップが使用され続けます。(私のmy.cnfファイルを以下に示し、メモリ使用量を以下に示します) 背景:テーブルにINNODBを使用する同じスキーマを持つアクティブデータベースが約50あります。MyISAMを使用するトラフィックの少ないデータベースがいくつかあります。 INNODBテーブルでは、永続的な接続を使用しません。一時テーブルを作成するレポート機能もあります。(これはリソースを集中的に使用する可能性がありますが、頻繁には発生しません) CENTOS 6.3とmysql 5.5.28-logを使用しています 私はスワップを使用していますが、パフォーマンスはかなり良好です。数日おきに再起動しないと問題が発生するのではないかと心配です。 約2日間の無料の-mのログは次のとおりです(最初のレコードはmysqlの再起動直後です)。 12/26 2:08 PM EST total used free shared buffers cached Mem: 992 697 295 0 74 362 -/+ buffers/cache: 260 732 Swap: 976 15 961 12/26 4:10 PM EST [root@php-pos-db ~]# free -m total used free shared buffers cached Mem: 992 …

4
InnoDB挿入の高速化
私はモンドリアンOLAPでOLAPを研究している大学院生です。そのため、最初の読み込みでデータをより速くInnoDB(MySQL 5.5)に挿入したいと考えています。この環境では、私しかユーザーがいないので、挿入速度をもっと緩やかに設定できると思います。現在、私は以下のテクニックを使用しています。 無効にする log_bin 可能にする skip-innodb-doublewrite セットtransaction_isolationにREAD-COMMITTEDかREAD-UNCOMMITTED(実際にREAD-COMMITED) セットinnodb_flush_log_at_trx_commitに0か2(実際に0) innodb_buffer_pool_size5GBに設定(システムには6GB RAMがあります) InnoDBに高速に挿入するためのテクニックは他にありますか?そして、私は変更する必要がinnodb_io_read_threadありinnodb_io_write_threadますか?さらに詳しい情報が必要な場合は、教えてください。


1
InnoDB-ibdata1ファイルとib_logfile0でのディスク書き込みI / Oが高い
サーバー仕様:次の情報を持つVPS model name : Intel(R) Xeon(R) CPU E5649 @ 2.53GHz MemTotal: 2058776 kB MemFree: 244436 kB Invision Power ServicesのIP.Boardを実行しinnodb_file_per_tableています。データベースを使用 してリロードし、ibdata1のサイズを小さくしています。ただし、ibdata1サイズが小さくなったにもかかわらず、最近でもCPUとI / Oの使用率が高いという問題がありました。 私の検査から、それはのI / O使用率が高いことが原因であると思いますibdata1。以下は、pt-ioprofile -cell sizes(Percona ToolKitで)を使用して取得したデータです。基本的に、30秒間に収集された合計I / O量です。 # pt-ioprofile -cell sizes Fri Jul 20 10:22:23 ICT 2012 Tracing process ID 8581 total pread read pwrite fsync open …
8 mysql  innodb 

4
MySQLサブクエリが大幅にスローダウンしますが、独立して正常に動作します
クエリ1: select distinct email from mybigtable where account_id=345 0.1秒かかります クエリ2: Select count(*) as total from mybigtable where account_id=123 and email IN (<include all from above result>) 0.2秒かかります クエリ3: Select count(*) as total from mybigtable where account_id=123 and email IN (select distinct email from mybigtable where account_id=345) 22分かかり、90%が「準備中」の状態です。なぜこんなに時間がかかるのですか? テーブルはMySQL 5.0で3.2mil行のinnodbです

2
挿入が多いInnoDBテーブルがCPUをすべて使用しない
パケットログデータベースを持っていますが、ほとんど照会されません。挿入時に高速である必要があります。ACIDコンプライアンスを維持したいので、InnoDBを使用しています。1つのパケットを失うだけでも、お客様に損害を与える可能性があるからです。パフォーマンス調整シナリオでは、複数のDB接続を介して1,000,000パケットをサーバーに送信します。しかし、my.cnfでどの設定を使用しても、12コアのシステムでmysqldプロセスが900%を超えるCPUを使用することはできません。(ボックスでは他に何も実行されていません。) 以下を設定しました innodb_file_per_table = 1 innodb_write_io_threads = 64 innodb_read_io_threads = 64 innodb_thread_concurrency = 0 MyISAMを使用すると、すべてのパケットを約6秒で書き込むことができます。しかし、InnoDBは約25必要です。MySQLに残りのシステムリソースを使用させ、より速く挿入できますか? 編集:これはテーブルのスキーマです: +-------+----------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------------------+------+-----+---------+-------+ | t | bigint(20) unsigned | YES | | NULL | | | a | char(1) | YES | …

2
MyISAMおよびInnoDBエンジンを使用するデータベースの一貫した論理バックアップ
MyISAMとInnoDBの両方を使用するMySQLデータベースの論理バックアップについて質問があります。 mysqldumpユーティリティは、これらの2つのオプションがサポートされています。 --single-transaction-すべてのテーブルを単一のトランザクションでダンプすることにより、一貫したスナップショットを作成します。マルチバージョニングをサポートするストレージエンジンに格納されているテーブルに対してのみ機能します(現在はInnoDBのみがサポートしています)[...]オプションは自動的に--lock-tablesをオフにします。 -x、-lock-all-tables-すべてのデータベースのすべてのテーブルをロックします。これは、ダンプ全体の期間中、グローバルな読み取りロックをとることによって実現されます。--single-transactionと--lock-tablesを自動的にオフにします。 InnoDBには、 --single-transaction MyISAMには、lock-tablesまたはlock-all-tablesが必要です(データベース間の整合性が必要な場合)。 それでは、ハイブリッドデータベース(MyISAMエンジンとInnoDBエンジンの両方を使用するデータベース)はどのようにバックアップされることになっていますか? 編集: 明確にするために、質問は次のように再定式化できます。 lock- [all-] tablesオプションはInnoDBテーブルの一貫したバックアップを保証しますか?

1
InnoDBデッドロックはINSERT / UPDATE / DELETE専用ですか?
私は「ロックを取得しようとすると、デッドロックが見つかっ、トランザクションを再起動してみてください」MySQLのエラーを回避作業。 デッドロックを許可するようにプログラムを更新する必要があります。SELECTステートメントがデッドロックエラーを生成する可能性はありますか?私はそれが読み取りロックであることを知っているので、複数の選択は問題になりませんがINSERT、UPDATEまたは、DELETEステートメント(結合でサブクエリが可能)とSELECTステートメント(結合またはサブクエリで可能)がある場合はどうなりますか? それがエラーがでスローされる可能性がありますSELECT代わりにINSERT、UPDATEまたはDELETE。 好奇心旺盛な人なら、ここに物語があります。

3
InnoDBデフォルト設定の最適化
my.iniを調べて、さまざまなデフォルト設定を確認しました。データベースが1台のスタンドアロンPCで実行されています。InnoDBとMySQLのパフォーマンスを全体的に最適化してパフォーマンスを向上させたい。ディスク容量の制約はありません。パフォーマンス、信頼性、ポイントインタイムバックアップの可能性を高めるために最適化するには、どのデフォルト設定を変更する必要がありますか(高可用性)。 編集済み 現在、MySQL AdministratorでMaintenanceを介して「Optimize Tables」を実行すると、常に次のように表示されます。 テーブルは最適化をサポートせず、代わりに再作成+分析を実行します すべてのテーブル。すべてのテーブルがInnoDBですが、なぜ最適化をサポートしていないのですか?

3
MySQLトリガーまたはトランザクションを使用していますか?
MySQLトリガーまたはWebサイトでのトランザクションの使用について、ご意見をお聞かせください。 実際、私はpayment-で履歴テーブルを持っていますUserId | OperationId | Comment | Credits | Sign (debit or credit)。したがって、各支払い操作がこのテーブルに挿入されます。 ただし、ユーザーがアクションを実行するたびに、ユーザーの合計クレジット額を計算するのに時間がかかります。そのため、各ユーザーの合計クレジット額をユーザーprofileテーブルに保持することをお勧めします。 ここに問題があります。profileテーブルの合計クレジット額がpayment履歴テーブルの操作と常に同期していることを確認するにはどうすればよいですか? 私は2つの方法を使用すると思いました: MySQLトリガーまたは ソースコードでコーディングされたトランザクション どちらがより信頼できますか?大規模なデータベース(100.000ユーザー以上)がある場合はどうなりますか? これを行うための提案はありますか? BD MySQLエンジンはInnoDBです。

2
phpMyAdminが読み込まれるたびにInnoDBでCOUNT(*)
innodbが遅いのは既知の問題です SELECT count(*) FROM Table したがって、私はそれを避けました。しかし、phpmyadminにログインするたびにcount(*)、19k行のinnodbテーブルが自動的に実行され、実行に最大1分かかることがあります。それでもcount(*)、400万行を含む他のinnodbテーブルでは、このような処理は開始されません。 phpmyadminの別の手掛かりとして、[レコード]列の下にある、19k行のテーブルのレコード数は正確な値を示していますが、400万行のテーブルはおよその値を示しています。 私はinnodbテーブルが行数の見積もりを与えることを理解しています。しかし、この例では1万9千行の小さなテーブルの場合、phpmyadmin count(*)は単に見積もりを行うのではなく、を行うことにしました。 質問は、phpmyadminが私のinnodbテーブルでこのようなカウントを実行しないようにする方法はありますか?phpmyadmin画面を更新するたびに、高額な行数を計算する代わりに、見積もりを出すだけでかまいません。
8 mysql  innodb 

2
大きなInnoDBテーブルにPRIMARY KEYを追加する良い方法は何ですか?
MySQL 5.5でInnoDBストレージエンジンを使用して約3,000万行のテーブルがあります。このテーブルには、約300万行の別のテーブルにリンクする外部キーがあります。 より大きなテーブルに主キーを追加したいのですが、これをどのように行うのが最善かわかりません。これに使用できる既存の列(または列のセット)がないので、どうすればよいですか? 内部InnoDBレコードIDへの参照をいくつか見ましたが、これがアクセス可能かどうかはわかりません。 それ以外の場合は、おそらくデータをダンプしてリロードし、IDを手動で追加する必要があります。 ありがとう。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.