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

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

4
チェック制約が機能しませんか?
次の表があります。 create table test ( id smallint unsigned AUTO_INCREMENT, age tinyint not null, primary key(id), check (age<20) ); 問題はCHECK、年齢の列で制約が機能しないことです。たとえば、年齢フィールドに222を挿入すると、MySQLはそれを受け入れます。
23 mysql  constraint 

2
MySQL DBをバックアップするためのベストプラクティス
私は最近、MySQLを実行する実稼働Webサーバーが定期的に(またはまったく)バックアップされていないことを発見しました。私はSQL Server DBのバックアップに慣れていますが、MySQL DBの豊富な経験はありません。「mysqldump」またはその他のDBバックアップツールを使用するためのベストプラクティスはありますか? スケジュールをcronジョブにして夜間に実行し、その後、バックアップシステムでファイルをバックアップします。 ありがとう。
23 mysql  mysqldump 

3
列が存在する場合は特定の行を、列が存在しない場合はすべての行を選択する方法
いくつかのテーブルの行数を取得するスクリプトを作成していますが、一部のテーブルでは、フラグが設定されている行数のみを取得したい(この場合はactive = 1)。1つのクエリでこれを行う方法はありますか? 例えば: テーブルusersにactiveという列があります テーブルにclientsactiveという列がありません active = 1のユーザーの数を取得し、クライアントの数を取得したいだけです。 あなたが言う前に「だけでハードコードは、それが」これは、多くの異なるデータベース上で実行することができPythonスクリプト内で起こっているクエリであり、私は私のスクリプトを選択し、それらが列を持っている場合に呼び出されますどのようなテーブル知る方法はありませんactiveし、 2つの別々のクエリではなく、1つのクエリだけですべてを実行し、mysqlに依存してエラーをスローすることで、もう1つのクエリを使用することができます。
23 mysql  select  count 

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
MySQLレプリケーションスレーブを読み取り専用に設定する必要がありますか?
このガイドに従って、Percona Server 5.5でレプリケーションを実行していますが、読み取り専用にするためにread-only=1スレーブに追加すべきかどうか疑問に思いましたmy.cnf。 このガイドでは、ユーザーが複製されるようにmysqlテーブルのレプリケーションを設定しますが、私は主にスレーブを使用してmysqldumpを取得し、緊急時にマスターに再構成します。それは常に?

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
「LOAD DATA INFILE」が通常のINSERTステートメントよりも高速なのはなぜですか?
私は、csvファイルから読み取り、データベースにデータを挿入するステートメントを使用して、1秒あたり60,000の挿入を達成できると述べた記事をLOAD DATA IN FILE読みました。 なぜ通常の挿入と異なるのですか? 編集: 私はただ1つのINSERTステートメントを呼び出すことでラウンドトリップを減らしました: INSERT INTO tblname VALUES (NULL,2,'some text here0'),(NULL,2,'some text here1') ,(NULL,2,'some text here2'),(NULL,2,'some text here3') .....,(NULL,2,'some text here3000'); これはどうですか?
22 mysql  import  bulk 

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

4
MySQLエラー:ユーザー 'a' @ 'localhost'のアクセスが拒否されました(パスワードを使用:YES)
アカウントを作成したルートアカウントを使用します'a'@'%'。しかし、hostパラメーターを指定すると、アカウントを使用してMySQLサーバーに接続できません。-hパラメータなしで正常に接続できます。以下のトランスクリプトをご覧ください。誰かがそれを説明するのを手伝ってくれることを願っています。ありがとう。 mysql> grant all on *.* to 'a'@'%' identified by a; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'a' at line 1 mysql> grant all on *.* to 'a'@'%' …

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

3
LIKEはどのように実装されますか?
LIKE演算子が現在のデータベースシステム(MySQLやPostgresなど)にどのように実装されているかを説明できますか?またはそれを説明するいくつかの参照を教えてください? 素朴なアプローチは、各レコードを検査し、対象フィールドで正規表現または部分的な文字列の一致を実行することですが、これらのシステムがよりスマートに動作することを感じています。

7
SQL ServerをMySQLに移行する必要がある
Windowsサーバー上のSQL Server 2008にデータベースがあり、Ubuntuサーバー上のMySQLデータベースにすべてのデータを移動したい。MySQL ODBCドライバーでSQL Serverのインポートおよびエクスポートウィザードを使用してみましたが、両方のデータベースに正しくアクセスしましたが、型変換の仕様を含むxmlファイルは存在せず、仕様を作成するには正しく制限されていました。型変換ファイルを作成する方法、またはこのデータを転送するためのより良いツールを入手する場所のいずれかを知っていますか?

1
MySQLで主キーとして複数のフィールドを設定する方法は?
フィールドを持つテーブルがあります 従業員ID ブラブラ blahblah2 ..... RecordMonth RecodrdYear そのため、各従業員には、月、年、Emp#のエントリのみが一致する必要があります。テーブルを設定するにはどうすればよいですか。 それでは、月に1回EmployeeIDを更新できるが、一致する月と年に2つのエントリを持たないようにテーブルを設定するにはどうすればよいですか?

1
Amazon RDS MySQLインスタンスで高いCPU使用率をデバッグするのに苦労しています
m1.xlarge MySQL RDSサーバーを実行しており、CPU使用率が高いという問題があります。数週間前に、大きなインスタンスでCPU使用率が100%に達するという問題がありました。サイズをxlargeにアップグレードすると、しばらくの間物事は安定しましたが、CPU使用率は徐々に再び上昇しました。 先週かそこらで、CPU使用率は90年代後半で、昨日は一貫して100%前後に達していました。これにより、本番サイトは停止しました。dbサーバーを再起動すると、数時間以内にCPU使用率が同じレベルに戻りました。 mysqlサーバーでshow processlistを実行し、MySQL adminを介して同じを監視しています。特に長時間実行されるクエリや大量のクエリも存在しないようです。長い間スリープ状態になっているプロセスがいくつかあります。これらは、データベースと通信するメインアプリの外部で実行されている分離されたワーカーデーモンです。サーバー名を変更して、それらが何であるかを説明する以下のprocesslist出力にコピーしました。 +------+----------+---------------------------------------------------+--------------+---------+-------+--------------+----------------------------------------------------------------------------------------+ | Id | User | Host | db | Command | Time | State | Info | +------+----------+---------------------------------------------------+--------------+---------+-------+--------------+----------------------------------------------------------------------------------------+ | 13 | rdsadmin | localhost:43513 | mysql | Sleep | 14 | | NULL | | 15 | proddbuser | app-server-1.eu-west-1.compute.internal:36460 | proddb …
21 mysql 

6
mysqldumpからのデータの読み込み速度が遅い
約30のテーブルを持つ適度なサイズのMySQLデータベースがあり、そのうちのいくつかは1,000万レコード、およそ1億レコードです。mysqldump(別のファイルに)すべてのテーブルのは、かなり速いです多分20分かかります。約15GBのデータを生成します。最大のダンプファイルは2GBの範囲です。 別のボックス、6コア、8GBマシンのMySQLにデータをロードすると、永遠に時間がかかります。簡単に12時間以上。 私はファイルをロードするためにmysqlクライアントを実行しています、すなわち mysql database < footable.sql mysqldumpから直接ファイルを直接 mysqldump database foo > footable.sql 明らかに私は何か間違ったことをしている。妥当な時間内に終了できるように、どこから始めますか? ダンプでもロードでもスイッチを使用していません。
21 mysql  mysqldump 

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