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

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

1
ユーザーアカウントごとにテーブルを作成するか、MYSQLのすべてのユーザーデータ用に1つの巨大なテーブルを作成する方が良い
個々のユーザーがアカウントにサインアップし、基本的にテキストドキュメントをmysqlデータベースエントリに保存できるようにするWebディレクトリを作成しています。 最初は数百人のユーザーしかいないと思われますが、ある時点で10,000〜100,000人になることを期待しています。また、各ユーザーは100〜200の「ドキュメント」をアップロードできます。 ユーザー番号でインデックス付けされた1つの巨大なテーブルを作成する方が効率的ですか?理論的には20,000,000エントリに成長する可能性があります。または、先に進み、個々のドキュメントを使用して各ユーザーのテーブルを作成しますか? データベースに数千のテーブルを置くことは健全ではないと想定していますが、これに関する具体的なデータは実際には見つかりません。
8 mysql 

2
適切なMySQLデータベースのメンテナンス
これで問題が広すぎないことを願っています。私とそれが偶然出会う将来のdba noobsを助けることができると確信しています。 私はDBAの役割を担うシステム管理者です(私はCEOの見通しを助けたので、明らかにデータベースを管理できます!)。それはデータベースサーバーのそれほど大きくない、または忙しいわけではありません... mysqldumpのサイズは約6GBであり、それほど大きくなるまでに5年かかりました。Muninは、ピーク時に1秒あたり平均40〜60クエリを実行していると報告しています。 私の上司は私にOracle Universityシステム管理コースの受講料を支払いましたが、受講した後は、mysqlサーバーのさまざまな部分、機能、方法を説明するだけです。しかし、それはそれほど深くはなく、そのコースからDBAに出ることは絶対にありません。 現在のDBAとして、すべてがスムーズに実行されていることを確認するにはどうすればよいですか?実行できる日常のメンテナンスタスクはありますか?チェックすべき特定のメトリックはありますか?または言い換えると、DBAとして、すべてを良好な状態に保つために毎日何をしていますか? 答えを少し調整するのに役立つ場合は、いくつかの詳細を以下に示します。テーブルは171ありますが、3つを除いてすべてinnodb、その他はmyisamです。RBRを使用して、プライマリデータセンターとディザスターリカバリーサイトの間にマスター/スレーブレプリケーションをセットアップしました。バージョンは5.5.28です。 私に何ができる?

6
大規模なデータベースの移動
CentOSサーバーがあり、/ var / lib / mysql /は125GBです(ディスクには1GBの空き容量があります)。 通常、mysqldumpを使用してデータベースをバックアップしますが、通常はそのような大きなデータベースを操作しないため、データベースを新しいサーバーにコピーする最も安全な方法を知る必要があります。 すべてのアドバイスに感謝します!

1
MySqlで月次出席レポートを表示する
Mysql DBを使用して、phpで学校管理システムを実行しています。プロジェクトで立ち往生しています。誰かが私が間違っていることを提案してください。 データベースに2つのテーブルがあります。1つはStudentsレコードを保存すること、もう1つはattendance日ごとに保存することです 今、私は今月の特定のクラスのすべての学生のレポートを表示したいと思います。ただし、欠席している学生の詳細のみを出席表でのみキャプチャしています。 ここに結果を表示するSQLクエリを作成しました。 SELECT tab.class, attend, DATE, ta.rollno, ta.StdNm FROM tbl_absentees tab, tbl_admission ta WHERE ta.Cls = class AND ta.rollno = tab.rollno AND class =22 AND attend = 'A' AND DATE = '2013-06-07'; 結果は次のとおりです。 Class Attend RollNo StudentName しかし、出席= Aの場合は出席表の日付のみを取り、31日の表の方法で表示したいのですが、欠席の場合はAを表示し、それ以外の場合は残りの日には「P」を表示します mysqlでこれを行うにはどうすればよいですか?誰かがこれを達成するためのアイデアを私に提案/提供できますか? 私の質問を誤解して申し訳ありません。実際には、データが2つのテーブルから取得される特定の月の出席レポートを表示したいと思います。 最初のテーブルは、StudentName、RollNo、Classで構成されています 2番目のテーブルは、日付、ステータス、RollNo、クラスで構成されます このようなレポートを表示したいのですが。
8 mysql  pivot 

2
.frmファイルだけからテーブルスキーマを抽出するにはどうすればよいですか?
mysqlのデータディレクトリをバックアップから抽出し、古いテーブルからスキーマを取得する必要がありますが、それは別のマシンからのバックアップです。 今日、これを行う方法についてのチュートリアルを多数読んでいますが、失敗するように見えるたび、またはmysqlがハングまたはクラッシュするためにmysqlを再インストールする必要があります。私は以下を試しました: 別のデータベースを作成する そのデータベースに同じ名前のテーブルを作成する ファイルを置き換える エンジンの停止/開始 .frmファイルから回復する いろいろな順番や組み合わせで試してみました。 .frmファイルからスキーマを抽出できる外部ツールはありますか?ファイルを開くと、列名が表示されます。私は一見したが、これを可能にする何かを見つけることができないようです。 前もって感謝します。

4
mysqlのレプリケーションは成功したが、スレーブがレプリケーションしていない
mysqlのマスター/スレーブ構成を作成しましたが、問題はありません。「マスターステータスの表示」スレーブではエラーは表示されません。これは出力です Slave_IO_State: Waiting for master to send event Master_Host: 109.123.100.58 Master_User: replica Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 106 Relay_Log_File: relay-bin.000001 Relay_Log_Pos: 4 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 106 Relay_Log_Space: 106 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 …

1
MySQLの起動/停止
次のコマンドラインを実行するとどうなるかを理解するための助けを求めています。 root@prodn$ service mysqld stop はい、それはMySQLサーバーをシャットダウンするので、サービスが再開されるまで、そのサーバーへのアクセスは利用できなくなります。しかし、より具体的には、サービスが停止したときに何か他に起こることはありますか?ここで私の初心者を許しますが、mysqldが再起動すると、ログがフラッシュされた、一部のメモリが解放された、キャッシュが空になったなどのことを意味しますか? 私が尋ねる理由は次のとおりです: 私たちのデータウェアハウスDBはMySQL DBであり、過去4か月で、平均8.5時間かかりました。 先週の水曜日に、mysqlサービスを停止し、30分後に再起動しました。それ以来、全体的なパフォーマンスの大幅な改善に気づき始めました。SELECT/ INSERT / UPDATE / DELETEプロセスの方が効率的でした。DWは同じ数のデータ行でほぼ4時間早く終了しました ただし、1日が経過するごとに、終了時間に15〜20分が追加されます。だから、私は毎週サービスを再開する必要があるのではないかと思います。 この動作の説明はありますか?関連する他の質問はわかりませんが、mysqldサービスの再起動時に何が起こるかを知ることはすばらしいでしょう。 誰かこれに光を当てることができますか?

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 …

2
多くのmysql一時テーブルを同時に作成するのは悪いことですか?
一部のデータをユーザーに提供するために、重い統計分析を行う必要があります。現在、私はmysqlからデータをキャッチし、PHP配列を介して処理しています。ただし、mysql一時テーブルの方がはるかに優れています(PHP配列よりもはるかに効率的で高速です。そのメカニズムにより)。 私の暫定的な解決策は、データをインポートして処理するための各要求(つまり、接続)時に一時テーブルを形成することです。しかし、多くの一時テーブルを同時に作成することの欠点があるかどうかはわかりませんか? これはmysqlサーバーに問題を引き起こす可能性がありますか?または、多数の同時リクエストでPHP配列の代わりとして使用できますか?

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ますか?さらに詳しい情報が必要な場合は、教えてください。

3
MySQL単一テーブルの静的および動的ピボット
次のようなテーブルがあります。 +----------------------------------------+ |Name | kode | jum | +----------------------------------------+ | aman |kode1 | 2 | | aman |kode2 | 1 | | jhon |kode1 | 4 | | amir |kode2 | 4 | +--------------------+-----------+-------+ MySQLでこのようなビューを作成するにはどうすればよいですか? kode1 kode2 count aman 2 1 3 jhon 0 4 4 amir 0 4 4
8 mysql  pivot 

1
MySQLソースコマンドを使用してSQLファイルを実行するときにコンソール出力を無効にする
まず、MySQLコマンドラインツールを起動します。 mysql --user=myusername --password=mypassword --silent --force -b 最後の-bオプションは、エラー時のビープ音を無効にするために使用されます。 次に、データベースを選択します。 use Mydatabasename; 次に、次のようなファイルからSQLを実行します。 source c:\x\y\z\myfile.sql それは物事がゆっくり行くときです。以前にファイルの一部を実行したことがあるので、コンソールは重複した行エラーでいっぱいになり、実行が著しく遅くなります。1秒あたり5〜10のステートメントが実行されます。重複する行がない場合、コードは5秒ごとに数万のステートメント(30k +)を実行します。 ファイルが大きく、一度に実行できないため、これを行う必要があります。
8 mysql  windows 

1
大規模なMySQLデータベースをRDSに移行するにはどうすればよいですか?
私はすでにこれを少し調べました。Stack Overflowにも同様の質問があることに気づき、Amazon自身もここに助言を提供する有用なドキュメントを持っています。 http://aws.amazon.com/articles/2933 私の懸念は次のとおりです。 Amazonではmysqldump、「1 GB未満」と定義されている「少量のデータ」のみに使用することを推奨しています。移行しようとしているデータベースが20GBを超えています。 mysqldumpただし、の良い点の1つは、--single-transactionフラグがあることです。これにより、特定の時点と一貫したDB状態を確保できます。 大量のデータの場合、Amazonの推奨は、データベースをフラット(CSVなど)ファイルにエクスポートし、それを使用mysqlimportしてそれらをRDSにインポートすることです。ただし、これを行う方法を知る最良の方法は、SELECT ... INTO OUTFILE一度に1つのテーブルのみを操作するコマンドを使用することです。もちろん、これの欠点は、の一貫性が保証されないことです--single-transaction。 DB全体を一時的に停止することで一貫性を確保できると思います。でも、なるべく避けたいです。 大容量(> 20GB)データベースをフラットファイルにして使用できるようにする最良の方法は何mysqlimportですか? それが実際にSELECT ... INTO OUTFILEコマンドである場合、データベース内のすべてのテーブルをエクスポートするにはどうすればよいですか(一度に1つずつ実行する必要がないことが望ましい)。 このすべてを通して一貫性を確保するための良い方法はありますか?


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