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

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

3
スケールアウトのためのレプリケーションの使用
「スケールアウトのためのレプリケーションの使用」を読んだ後、さまざまなクエリをさまざまなサーバーにルーティングする方法を教えてください。たとえば、SELECTスレーブとNON-SELECTマスターにルーティングする必要があります。私はロードバランサーとしてhaproxyを使用できると思いますが、haproxyのレベルでクエリを区別することはできないと思いましたか?さらに、誰かがマスターに直接到達したとします。マスターがこれがSELECTクエリであることを識別し、スレーブまたはロードバランサーに送信されるように表示するにはどうすればよいでしょうか。

1
MySQLでのデータベースサイズとディスク上の実際のサイズの大きな違い
MySQLでデータベースのサイズを確認すると、次のようになります。 MariaDB [(none)]> SELECT table_schema "Data Base Name", sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB", sum( data_free )/ 1024 / 1024 "Free Space in MB" FROM information_schema.TABLES GROUP BY table_schema; +--------------------+----------------------+------------------+ | Data Base Name | Data Base Size in MB | Free …
8 ubuntu  mysql  mariadb 

1
NOT NULLで定義されたMySQL列はnullを許可しています
しばらく前にテーブルを作成し、そこにデータを追加し始めました。最近、新しい列(address)をNOT NULL新しい列の一部として追加しました。古い行(追加前)は依然としてnullであり、定義の一部として警告が作成されました。ただし、新しい列を含む新しい行はnullを挿入できます。 新しい列の追加前のnullは許可されていますか?もしそうなら、前にあったとしてもそれを許可しないようにMySQLに指示する方法はありますか? mysql> show create table my_table\G *************************** 1. row *************************** Table: my_table Create Table: CREATE TABLE `my_table` ( `entry_id` int(11) NOT NULL auto_increment, `address` varchar(512) NOT NULL, `follow_up_to` int(11) default NULL, PRIMARY KEY (`entry_id`), KEY `follow_up_to` (`follow_up_to`), CONSTRAINT `my_table_ibfk_1` FOREIGN KEY (`follow_up_to`) REFERENCES `my_table` (`entry_id`) ON UPDATE CASCADE …
8 mysql  null 

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 | …

4
MySQL Cluster RAM要件
MySQL 5.1以降、データを完全にメモリ上に置く必要がなくなりました。 インデックス付きの列(インデックス全体の構造)は引き続きメモリ内にある必要があることを読みました(MySQL High Availability、2010、pg。533、「MySQL Clusterはすべてのインデックス付きの列をメインメモリに保持する」)。 これに照らして、メモリが不足している場合(つまり、巨大なデータベース(> 100GB、または1TB)、低メモリ構成(2つのデータノード、それぞれ1GBのRAMなど)で実行されている場合)はどうなりますか?

4
認証のために「ユーザー」テーブルを分割することは良い考えですか?
私のサイトにユーザーテーブルがあり、テーブルに約200万から300万のユーザー(レコード)がいるとします。 ログインプロセスを高速化するために、1つは情報用に、もう1つはログイン用に、ユーザーテーブルを分割することをお勧めします。 次のようなクエリを1つのテーブルから実行できる場合: select username,password from users where username=`test` AND password=**** 分割する必要はありますか?これは私のサイトのログインプロセスをスピードアップしますか?

4
外部キー設計のIDの増分とフルテキストキーのトレードオフは何ですか?
多くのリレーショナルデータベース設計には、他のテーブルで参照されるフィールドがあります。 たとえば、一意のユーザー名を持つユーザーテーブルと、アドレスデータを格納する2番目のテーブルについて考えます。 私が言えるレイアウトの1つは、ほとんどのソフトウェアで観察されているため、次のような自動インクリメントIDを使用するという一般的なアプローチです。 Table users =========== userId int primary auto_increment userName varchar unique Table adressdata ========== userId int references users.userId adress_type varchar // for example country address_value varchar // for example US (you probably also want to put a unique key on (userId,adress_type)) これが以前のやり方であり、ほとんどの場合私はそれを見てきました。 別の方法は次のとおりです。 Table users =========== userName varchar …
8 mysql 

1
MySQL 5.5でのperformance_schemaの使用方法を教えてください。
MySQLバージョン5.5にアップグレードしました。そこで、スキーマリストでperformance_schemaを確認しました。 この新しいスキーマの使用法は何ですか。 このスキーマを使用してどのように監視できますか? このスキーマを使用する利点は何ですか。 このスキーマを有効にすることによるオーバーヘッドはありますか?

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テーブルの一貫したバックアップを保証しますか?

3
毎週木曜日またはその他の曜日から始まる週次結果でSQLステートメントを改善するにはどうすればよいですか?
私はまったくの初心者ですが、これを行う良い方法がどこにもありませんでした。週のさまざまな時間に記録される統計を含むデータベーステーブルがあります。報告週は木曜日に始まります。テーブルには、データがいつ記録されたかを格納する日付スタンプ列(日付)が含まれています。 特定の週のデータを取得する必要があります(レポート週は木曜日から始まります)。次のクエリを作成しました。 SELECT * FROM `table` WHERE 1 = CASE WHEN WEEKDAY(NOW()) = 0 THEN DATEDIFF(NOW(),`date`) BETWEEN -2 AND 4 WHEN WEEKDAY(NOW()) = 1 THEN DATEDIFF(NOW(),`date`) BETWEEN -1 AND 5 WHEN WEEKDAY(NOW()) = 2 THEN DATEDIFF(NOW(),`date`) BETWEEN -0 AND 6 WHEN WEEKDAY(NOW()) = 3 THEN DATEDIFF(NOW(),`date`) BETWEEN -6 AND 0 …
8 mysql  mariadb 

3
すべての重複を削除する
すべての重複を削除しようとしていますが、単一のレコードのみ(短いID)を保持しています。次のクエリは重複を削除しますが、すべてのコピーを削除して元のコピーを維持するには、多くの繰り返しを必要とします。 DELETE FROM emailTable WHERE id IN ( SELECT * FROM ( SELECT id FROM emailTable GROUP BY email HAVING ( COUNT(email) > 1 ) ) AS q ) そのMySQL。 Edit#1 DDL CREATE TABLE `emailTable` ( `id` mediumint(9) NOT NULL auto_increment, `email` varchar(200) NOT NULL default '', PRIMARY KEY (`id`) …
8 mysql  query  delete 

2
MySQL Auto_incrementが2行2列に進む
先日、MySQL Workbenchをインストールし、会社のデータベースにアクセスして、自分で作業するためのテーブルを作成しました。ここまでは順調ですね。問題は、auto_incrementが2ずつ増加していることに気づいたことです。次に例を示します。 ID NAME 1 Paul 3 Jack 5 Louis 7 John ... 私がするとき、私はSHOW VARIABLES LIKE 'auto_inc%'これを手に入れます: 'auto_increment_increment', '2' 'auto_increment_offset', '1' だから私はauto_increment_increment1に設定してみました: SET @@auto_increment_increment=1 そして、もう一度SHOW VARIABLES LIKE 'auto_inc%'確認したところ、「動作する」という結果で確認されました。 'auto_increment_increment', '1' 'auto_increment_offset', '1' しかし、私のIDはまだ2ずつ増加しています。 最初にそれを実行したとき、それはうまくいき、それからMySQL Workbenchを閉じて、もう一度開いたときに、再び2auto_increment_incrementに設定されていることに気付きました。今、私はもう一度それをやろうとしていますが、それはもううまくいかないようです。 誰か助けてくれますか? みんなありがとう。

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およびPostgreSQLライセンスの問題
当社は、1つのソフトウェア製品にMySQLを使用したいと考えています。この製品はオープンソースではありません。自由に使用することは合法ですか? そうでない場合、PostgreSQLはどうですか?これは私たちの目的で大丈夫ですか?

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