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

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

4
MySQL:auto_incrementが主キーだけに制限されているのはなぜですか?
MySQLがauto_incrementカラムを主キーに制限していることを知っています。どうしてこれなの?私の最初の考えは、この値を取得するためにロックする必要があるカウンターテーブルがどこかにある可能性があるため、これはパフォーマンスの制限だということです。 同じテーブルに複数のauto_increment列を含めることができないのはなぜですか? ありがとう。

2
そのフィールドに複数列のインデックスが既に存在する場合、テーブルに新しい単一列のインデックスを追加する必要がありますか?
とに複数列のUNIQUEインデックスを持つテーブルが_job_id__あり__keyword_id__ます。 その列__job_id__に対してクエリを頻繁に実行する場合、別のインデックスを追加する必要もありGROUP BYますか? (1億行になると、しばらく時間がかかることがあります。これが、単に実行する代わりに求めている理由です)
10 mysql  index 

3
フィールドを一意にすると、インデックスが作成されますか?
uniqueフィールドに制約を課す場合、スケーラブルな挿入時間を得るために、そのフィールドにインデックスを作成する必要もありますか?または、これは私のために行われますか? 具体的には、私はプロトタイピングのためにApache Derbyを使用していますが、おそらく近い将来にMySQLに移行する予定です。また、SQL標準にこれについて何かを述べている何かがあるといいのですが。 このフィールドで検索する必要がないので、役に立たないインデックスを作成したくありません。しかし、私はO(n)挿入時間よりも役に立たないインデックスが欲しいです。

2
原因不明のInnoDBタイムアウト
最近、いくつかの非常に基本的な更新がタイムアウトし、原因を特定できませんでした。例: //#Query_time:51 Lock_time:0 Rows_sent:0 Rows_examined:0 UPDATE photos SET position = position + 1 WHERE (photo_album_id = 40470); 同じログには、Lock_time> 0のエントリはありshow innodb statusません。実行しても、関連するロックは明らかになりません。この問題は、私のアプリケーションサーバーログ(Mysql::Error: Lock wait timeout exceededmysql-slowログの対応する各エントリに関連するエラーを示す)に基づいて、少なくとも5つの異なるテーブルに影響しているようです。 ここからどこへ行くべきかについてのアイデアはありますか?私はあらゆる方向に行き止まりを打っています。ありがとう。 編集: CREATE TABLE `写真`( `id` int(11)NOT NULL auto_increment、 `type` varchar(255)NOT NULL、 `photo_album_id` int(11)NOT NULL、 `user_id` int(11)NOT NULL、 `title` varchar(255)default 'Untitled'、 「説明」テキスト、 `credit` varchar(255)デフォルトはNULL、 `photo_file_name` …


9
ロードバランサーなしの負荷分散MySQLクラスター
私は、負荷分散されたMySQLクラスターを作成しようとしていますが、実際の負荷分散装置を使用せずに、障害や複雑さの別のポイントを追加しません。 私が考えていたのは、次のことです。 MySQLのマスターマスターセットアップがある すべてのクライアントに、サーバー間で要求をローテーションする単純なラウンドロビンプロキシを配置します。 これは可能ですか?またはこれを達成するためのより良い方法はありますか?
10 mysql 

5
テーブルの行サイズと最大行サイズを計算する
問題: テーブルの作成に使用されるバイト数を計算する方法はありますか?information_schema.tablesからいくつかの情報を取得できますが、その情報は十分に正確ではありません。 実際に必要なのは、innodbのみのテーブルの定義によるバイト数であり、照合はutf-8-general-ciと見なすこともできます。 たとえば、テーブルテストは次のようになります。 テーブルテストの作成 ( col1 varchar(25)、 col2 int、 col3 varchar(3)、 col4 char(15)、 col5 datetime )); これで、テーブルの列のタイプに応じて1つの行に累積できる合計行サイズを知る必要があります。 MSSQLで同様のソリューションを見つけたが、MySQLバージョンが必要 任意のテーブルの行サイズを推定するスクリプト どんな助けでも大歓迎です。

2
共用体が整数を天井にキャストする際の問題(10進数)
私はこのシナリオを持っています。MySQLが最大の10進数値を取り、他の値をそれにキャストしようとしているようです。 問題は、このクエリが外部ライブラリによって生成されるため、少なくともこのレベルでは、このコードを制御できません。これを修正する方法を知っていますか? SELECT 20 AS x UNION SELECT null UNION SELECT 2.2; +------+ | x | +------+ | 9.9 | -- why from 20 to 9.9 | NULL | | 2.2 | +------+ 期待される結果 +------+ | x | +------+ | 20 | -- or 20.0, doesn't matter really in my …

2
結合されたテーブルの列によるソートを最適化する方法はありますか?
これは私の遅いクエリです: SELECT `products_counts`.`cid` FROM `products_counts` `products_counts` LEFT OUTER JOIN `products` `products` ON ( `products_counts`.`product_id` = `products`.`id` ) LEFT OUTER JOIN `trademarks` `trademark` ON ( `products`.`trademark_id` = `trademark`.`id` ) LEFT OUTER JOIN `suppliers` `supplier` ON ( `products_counts`.`supplier_id` = `supplier`.`id` ) WHERE `products_counts`.product_id IN (159, 572, 1075, 1102, 1145, 1162, 1660, 2355, …
10 mysql  order-by 

3
ミリ秒での時間のデータベースへの保存
データベースへの「時間」の格納に関する簡単な質問です。ユーザーの実行時間を00:00:00:00(時間、分、秒、ミリ秒)の形式でログに記録しています。 私はもともとそれを保存するつもりでしたTIMEが、MySQLがこのタイプのミリ秒をサポートしていないことに気付きました。 ユーザーのストップウォッチから取得した実際の時間を保存します。ユーザーが実行して終了した時間ではありません(これは挿入される前に計算されます)。 使用するのに最適なフィールドタイプは何ですか?doubleまたはのどちらかを考えfloatていましたが、うまくいくかわかりませんか?

1
MySQL 5.5が5.1より遅い理由(Linux、mysqlslapを使用)
my.cnf(5.5と5.1は同じ): back_log=200 max_connections=512 max_connect_errors=999999 key_buffer=512M max_allowed_packet=8M table_cache=512 sort_buffer=8M read_buffer_size=8M thread_cache=8 thread_concurrency=4 myisam_sort_buffer_size=128M interactive_timeout=28800 wait_timeout=7200 mysql 5.5: ..mysql5.5/bin/mysqlslap -a --concurrency=10 --number-of-queries 5000 --iterations=5 -S /tmp/mysql_5.5.sock --engine=innodb Benchmark Running for engine innodb Average number of seconds to run all queries: 15.156 seconds Minimum number of seconds to run all queries: 15.031 seconds …

2
投稿への高評価または投票
ユーザーが投稿したりブログを書いたりする小さなプログラムを作っています。これらの投稿では、他のユーザーがFacebookのように投稿を高く評価したり、低く評価したり、Stackoverflowのように投稿に賛成または反対票を投じたりできます。一般的に使用されている適切なデータベース構造と、プログラムがその構造で効率的に機能することを知りたいのですが。2つのオプションがあります 最初 役職: id head message datepost likes dislikes 1 ab anchdg DATE 1,2,3 7,55,44,3 上記のようにid、postidです。「いい1,2,3ね!」列には、投稿またはブログを高く評価したか賛成したユーザーのIDを指定します。7,55,44,3投稿またはブログを低評価または反対票を投じたユーザーのIDです。 二番目 役職: id head message datepost 1 ab anchdg DATE いいね: id postid userid 1 1 1 2 2 2 嫌い: id postid userid 1 1 7 2 1 55 このように、私は投稿のいいねを取得するために、いいねと嫌いのために2つの個別のテーブルを作成する必要があります。このようにして、テーブル、つまりLikes&Dislikesは非常にいっぱいになります。これにより、テーブルが重くなり、処理が遅くなる場合があります。 それで、私はこのタスクを達成するためのより良い標準的な方法がどれであるか知りたいですか?

1
タイムスタンプフィールドの無効なデフォルト値(mysql 5.7)
編集:mysql 5.6から既存のデータベースを更新して実行する場合: UPDATE phppos_register_log SET shift_end = '2015-01-01 00:00:00' WHERE shift_end = '0000-00-00 00:00:00'; これにより、以下が生成されます。 #1292 - Incorrect datetime value: '0000-00-00 00:00:00' for column 'shift_end' at row 1 #1067 - Invalid default value for 'shift_start' これはmysql <= 5.7で機能しました。これに関するドキュメントが見つかりませんでした...これの問題は何ですか? CREATE TABLE `phppos_register_log` ( `register_log_id` int(10) NOT NULL AUTO_INCREMENT, `employee_id_open` int(10) NOT …
10 mysql  mysql-5.7 

3
並行テーブルベースのキューを実装する最良の方法
MySQLに、処理されるリンクのキューを表すテーブルがあります。リンクは外部アプリによって1つずつ処理され、最後に削除されます。これは大量のキューであり、処理アプリの複数のインスタンスが複数のサーバーに分散しています。 各レコードが1つのアプリのみによって選択されるようにするにはどうすればよいですか?レコードにフラグを付ける/ロックする方法はありますか? 現在、2つ以上が同じリンクを取得しないようにするために、各インスタンスが特定のレコードセット(IDのMODに基づく)のみを取得することを許可していますが、これはキューの処理を増やす透過的な方法ではありません新しいインスタンスを追加するだけでスピードアップ。
10 mysql  queue 

1
MySQL InnoDB Deadlock for 2つの単純な挿入クエリ
この2つの挿入クエリにはデッドロックがあります。 insert into PlayerClub (modifiedBy, timeCreated, currentClubId, endingLevelPosition, nextClubId, account_id) values (0, '2014-12-23 15:47:11.596', 180, 4, 181, 561) insert into PlayerClub (modifiedBy, timeCreated, currentClubId, endingLevelPosition, nextClubId, account_id) values (0, '2014-12-23 15:47:11.611', 180, 4, 181, 563) InnoDBのステータスは次のとおりです。 ------------------------ LATEST DETECTED DEADLOCK ------------------------ 2014-12-23 15:47:11 1f4c *** (1) TRANSACTION: TRANSACTION 19896526, ACTIVE …
10 mysql  innodb  deadlock 

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