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

MySQLのすべてのバージョン(Microsoft SQL Serverではありません)。質問に関連する場合は、mysql-5.7のようなバージョン固有のタグも追加してください。

7
MySQLでMEMORYストレージエンジンを使用しない理由は何ですか?
私は最近、MySQLが認識していない「メモリ」エンジンを持っていることを発見しました(私のデータベース作業の大部分は趣味のプロジェクト向けであるため、必要に応じて学習しています)。このオプションを使用すると、パフォーマンスが大幅に向上するはずなので、それに伴う欠点はあるのでしょうか。私が知っている2つは: 問題のテーブルを保持するのに十分なRAMが必要です。 マシンがシャットダウンすると、テーブルは失われます。 私はAWS EC2を使用しており、必要に応じてより多くのメモリを備えたインスタンスタイプに移行できるため、#1は問題ではないと考えています。必要に応じてディスクにダンプバックすることで、#2を軽減できると思います。 他にどんな問題がありますか?メモリエンジンは、MyISAMまたはInnoDBのいずれよりもパフォーマンスが低下することはありますか?このエンジンではインデックスが異なるということを読んだと思います。これは私が心配する必要があるものですか?

4
Explainクエリで「constテーブルを読み取った後に「不可能なWHERE」に気付くのはなぜですか?
テーブルにfr(fromid、toid)のような一意の複合キーがあり、explainを使用してクエリを実行すると、次の結果が得られます。 Impossible WHERE noticed after reading const tables` 私が実行したクエリ: explain SELECT rid FROM relationship WHERE fromid=78 AND toid=60 何か助け? EDIT1: 以下のクエリを使用する場合: explain SELECT rid FROM relationship WHERE fromid=60 and toid=78 AND is_approved='s' OR is_approved='f' OR is_approved='t' 私が見るUSING WHERE代わりに、前のメッセージで、私は、クエリの下に使用する場合: explain SELECT rid FROM relationship WHERE fromid=60 and toid=78 AND (is_approved='s' OR …
27 mysql  explain 

2
MySQLはディスク上に一時テーブルを作成します。どうすれば止めることができますか?
ユーザーが現在遅いと感じるサイト(Moodle)を運営しています。私は、ディスク上に一時テーブルを作成するMySQLの問題を突き止めたと思います。created_tmp_disk_tablesMysql Workbenchサーバー管理で変数を見ると、その数は約50テーブル/秒で増加します。1日の使用後、created_tmp_disk_tables> 100kです。また、メモリは解放されていないようです。システムがほとんど使用できなくなり、MySQLを再起動するまで、使用量は増加し続けます。私はほぼ毎日それを再起動する必要があり、利用可能なメモリの約30〜35%を使用して開始し、80%で1日を終了します。 データベースにblobがなく、クエリを制御できないため、クエリを最適化することもできません。Percona Confirguration Wizardも使用しましたを使用して構成ファイルを生成しましたが、my.iniでも問題は解決しませんでした。 ご質問 MySQLがディスク上に一時テーブルを作成しないようにするには、何を変更すればよいですか?変更する必要がある設定はありますか?もっとメモリを投入する必要がありますか? MySQLがメモリを使い果たすのを止めるにはどうすればよいですか? 編集 slow_queriesログを有効にすると、クエリのSELECT GET_LOCK()ログが遅いことがわかりました。クイック検索の結果、PHP構成で永続的な接続が許可されていたことがわかりました(mysqli.allow_persistent = ON)。これをオフにしました。これにより、MySQLがメモリを消費する割合が減少しましたが、一時テーブルはまだ作成されています。 また、key_buffer sizeが十分に大きいことも確認しました。変数を見ましたkey_writes。これはゼロでなければなりません。そうでない場合、key_buffer_size.I have zero key_readsand zeroを増やすkey_writesので、key_buffer_sizeが十分に大きいます。 私は増加tmp_table_sizeし、max-heap-table-sizeテーブルがメモリに収まることができないことを示すことがありcreated_tmp_disk_tablesの増加として1024Mに。これで解決しませんでした。 参照:http : //www.mysqlperformanceblog.com/2007/08/16/how-much-overhead-is-caused-by-on-disk-temporary-tables/ 編集2 sort_merge_passesSHOW GLOBAL STATUS出力で1秒あたりの数が多い場合は、sort_buffer_size値を増やすことを検討できます。私はsort_merge_passes1時間で2つ持っていたので、sort_buffer_size十分に大きいと考えています。 参照:Mysqlマニュアル sort_buffer_size 編集3 @RolandoMySQLDBAの提案に従って、ソートバッファーと結合バッファーを変更しました。結果は下の表に表示されていますが、created_tmp_tables_on_diskまだ高いと思います。値を変更しcreated_tmp_tables_on_disk、1日(8時間)後にチェックして平均を計算した後、mysqlサーバーを再起動しました。他の提案はありますか?ある種のコンテナに収まらないものがあるように思えますが、それが何であるかを判断することはできません。 +---------------------+-------------+-------------+--------------------+ | Tmp_table_size, | Sort_buffer | Join_buffer | No of created | | max_heap_table_size | | | tmp_tables …

2
MySQLのベイクオフを適切に実行するにはどうすればよいですか?
Perconaサーバー、MariaDB、および場合によっては他のいくつかのフォークに対して、MySQLサーバーrpmのパフォーマンステスト(別名、ベイクオフ)を行います。この質問をすることで、適切なパフォーマンステストのセットアップの背後にある方法論をよりよく理解できることを望んでいます。私は実際のテストを実行するためにsysbenchを使用する予定でしたが、何に対してもオープンです。 テストの結果を1対1で比較し、RDBMSのみがバリアントであることを確認するには、どのような手順を実行する必要がありますか? どこから始めますか? 結果を評価するにはどうすればよいですか? どのようなアドバイスをいただけますか?

2
innodb_file_per_tableがautoextendに設定された「エラー1114(HY000)テーブルがいっぱいです」
私は大量のデータを保持するMySQLデータベースを持っています(100-200GB-科学的測定の束)。データの大部分は1つのテーブルに格納されますSample。現在、データベースのスレーブレプリカを作成innodb_file_per_tableしています。このプロセスの利点を活用したかったのです。そこでinnodb_file_per_table、スレーブ構成に設定し、データベースのダンプをインポートしました。驚いたことに、失敗しました 5602行目でエラー1114(HY000):テーブル 'Sample'がいっぱいです ファイルSample.ibdは現在約93GBであり、パーティションで600GB以上の空き容量が利用できるため、ディスクの空き容量の問題ではありません。いずれの種類のファイルシステムの制限にも達していないようです(ext4を使用しています)。 何が原因であるか、何を調査するべきかについてのアイデアに感謝します。 更新:を使用していmysql Ver 14.14 Distrib 5.1.66, for debian-linux-gnu (x86_64)ます。 SELECT @@datadir; -- returns `/home/var/lib/mysql/` SHOW VARIABLES LIKE '%innodb_data_file_path%'; -- ibdata1:10M:autoextend df -h /home/var/lib/mysql/ 768G 31G 699G 5% /home


2
mysqlロック待機タイムアウトが超過しました。トランザクションを再開してみてください
私たちは、長年にわたって実行されているJavaアプリケーションを実行しています。バックエンドはMySQLです。最近、mysql 5.6に更新されました。すべてが正常に実行され、先週はこのエラーが発生し始めました。ロック待機タイムアウトが超過しました。終了を停止しないように見えるトランザクションを再起動してみてください。このエラーを停止するにはどうすればよいかわかりません。突然それが起こっている理由
26 mysql  mysql-5.6 

5
MySQLのテーブルのデータサイズとインデックスサイズを推定/予測する方法
私が発見していますテーブルの大きさを推定するための最良の方法は何か私はブログやフォーラムの多くを学んだが、任意の正確な答えを見つけることができていることのために たとえば、InnoDBエンジンを搭載したテーブルCityがあり、将来(今後1年)に100万件のレコードがあるため、この期間のそのテーブルの推定データサイズとインデックスサイズはどうなるでしょう。 mysql> desc City; +-------------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+----------+------+-----+---------+----------------+ | ID | int(11) | NO | PRI | NULL | auto_increment | | Name | char(35) | NO | | | | | CountryCode | char(3) | NO | …
26 mysql  innodb 

7
なぜinnodb_file_per_tableを使用するのですか?
の必要性を誇張する(もちろん私見)多くの記事がありますinnodb_file_per_table。を使用するとinnodb_file_per_table、個々のテーブルをより適切に制御できるはずです。各テーブルを個別にバックアップするようにします。ただし、パフォーマンスを向上させるという主張には疑問があります。 私のテストでは、性能の差はないinnodb_file_per_tableとibdata160ギガバイトのデータベースのために。もちろん、通常のクエリを使用した簡単なテストであり、実際の複雑なクエリでは状況が異なる場合があります(これがこの質問をした理由です)。64ビットLinuxは、ext4大きなファイルを効果的に処理できます。 ではinnodb_file_per_table、より多くのディスクI / O操作が必要です。そして、これは複雑なJOINsとFOREIGN KEY制約で重要です。 テーブルスペースはsingleで共有されibdataます。個別のテーブル専用のテーブルスペースがディスクスペースを節約する方法 もちろん、を使用して各テーブルのテーブルスペースを解放する方が簡単ALTERですが、それでも(テーブルロックを伴う)高価なプロセスです。 QUESTION: DOESはinnodb_file_per_tablemysqlののより良いパフォーマンスに影響を持っていますか?はいの場合、なぜですか?


2
MySQLで「ibfk」は何を表していますか?
phpmyadminでテーブル 'photos'の外部キー制約を作成すると、後で制約の名前が 'photos_ibfk_1'になり、次の制約が 'photos_ibfk_2'などと呼ばれることがわかります。これから、[tablename] _ibfk_constraintIndexがMySQLのDB制約の規則。これは正しいです?IBFKは何の略ですか?

1
Mysql Innodb:InnoDB:エラー:最後のチェックポイントの経過時間はInnoDB:ロググループの容量を超えています
mysqlの専門知識が本当に必要です。私はmysqlの初心者であり、過去1週間にdbのサーバークラッシュが発生しています。 Ubuntuでmysql 5.1.36を使用しています。これは、デュアルコア、4GBメモリ、40GB SSDを備えた専用mysqlサーバーです。 ログエラーは次のとおりです。 120413 23:57:15 [Note] Plugin 'FEDERATED' is disabled. 120413 23:57:15 [Warning] option 'innodb-autoextend-increment': unsigned value 2000 adjusted to 1000 120413 23:57:15 InnoDB: Initializing buffer pool, size = 2.9G 120413 23:57:15 InnoDB: Completed initialization of buffer pool 120413 23:57:16 InnoDB: Started; log sequence number 0 44234 120413 …
25 mysql  innodb 

3
innodb_file_format Barracuda
もっとよく知っている人たちにいくつか質問があります。私のインスタンスのほとんどは、Barracudaをサポートしているにもかかわらず、Antelopeを実行しています。 私はいくつかの圧縮innodbテーブルをいじりたいと思っていました。私の理解では、これはBarracuda形式でのみ利用可能です。 innodb_file_formatは動的なので、バウンスせずに切り替えることができます。これを行うことの影響はありますか?私が知ることができるのは、新しいテーブルまたは後で変更されるテーブルがそのフォーマットで作成されるということです。これはすべて正しいですか? 私はすべてのテーブルを通過して変換する必要がないことを望んでいました。コーシャは、同じテーブルスペースにアンテロープとバラクーデのテーブルを共存させるのですか?それが機能していても、注意すべき点はありますか? 私がテストから読んで集めたものからの答えは次のとおりです。はい。はい。よく分かりません。 更新 この投稿以降、さまざまなインスタンスでいくつかの動的テーブルと圧縮テーブルを使用して実行していますが、問題はありません。さらに 、その時点でhttp://dev.mysql.com/doc/refman/5.5/en/innodb-file-format-identifying.htmlを読むことを怠りました。 特定のinnodb_file_formatを有効にすると、この変更は既存のテーブルではなく、新しく作成されたテーブルにのみ適用されます。新しいテーブルを作成する場合、テーブルを含むテーブルスペースには、テーブルの機能に必要な「最も早い」または「最も簡単な」ファイル形式のタグが付けられます。たとえば、Barracudaのファイル形式を有効にし、圧縮されておらずROW_FORMAT = DYNAMICを使用しない新しいテーブルを作成すると、テーブルを含む新しいテーブルスペースにはAntelopeファイル形式を使用するタグが付けられます。 したがって、Barracudaを許可した場合でも、テーブルはAntelopeとして作成されます。すべてのテーブルをrow_format動的または圧縮テーブルとして指定しない限り、混合は避けられません。 最初のBarracudaテーブルを導入するときに、完全なダンプとリロードを行う必要があることを示すものはありません(mysqlのメジャーバージョンをアップグレードするときに推奨されます)。

2
実行時にbinlog形式を切り替える最も安全な方法は何ですか?
次の警告のためmysqld.log: [警告] BINLOG_FORMAT = STATEMENT以降、ステートメント形式を使用してバイナリログに書き込まれる安全でないステートメント。このステートメントは、LIMIT句を使用しているため安全ではありません。含まれる行のセットを予測できないため、これは安全ではありません。 レプリケーション形式をに切り替えたいMIXED。 しかし、MySQLドキュメントによると: テンポラリテーブルが存在する場合、実行時にレプリケーション形式を切り替えることはお勧めしません。テンポラリテーブルは文ベースのレプリケーションを使用する場合にのみ記録され、行ベースのレプリケーションでは記録されないためです。 したがって、問題は、バイナリログ形式を安全に切り替えるために一時テーブルが存在するかどうかをどのように識別できるかです。

8
テストデータの大規模なデータセットを生成するツール[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、データベース管理者のStack Exchangeのトピックになるようにします。 5年前に閉鎖されました。 ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 効率的なデータベース設計を考えようとするとき、2つのサンプルデータベースを構築し、それらにデータを入力し、それらに対していくつかのクエリを実行して、どちらのパフォーマンスが優れているかを確認することが最善の方法です。 (理想的にはデータベースに直接)大規模(〜10,000レコード)のテストデータセットを比較的迅速に生成するツールはありますか?少なくともMySQLで動作するものを探しています。

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