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

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

1
MySQLの既存のトリガー定義を変更することはできますか?
MySQLでトリガー定義を更新できるかどうか疑問に思っています。たとえば、トリガーTがあり、いくつかの新しい機能を追加したいです。 私の想定では、ドロップして再作成する必要があります。 このようなシナリオのデータベース管理のベストプラクティスは何ですか?
14 mysql  trigger  update 

4
MySQL-テーブルを変更して自動的にUUIDを入れる
わかりました、私はこれを前にしたことを知っています。しかし、私はそれを理解することはできません。テーブルを作成しました。列の1つは「LogID」というラベルが付けられており、主キーでもあります。 この列が新しいエントリごとにUUIDを生成するように変更するにはどうすればよいですか? ありがとう
14 mysql 


2
存在する場合は更新、そうでない場合は挿入
というテーブルにSTORED PROCEDURE使用されるを作成しようとしています。このテーブルには3つの列(、および)があります。UPDATEmachinemachine_idmachine_namereg_id 上記の表のreg_id(INT)は、の値を変更できる列ですmachine_id。 QUERY/ を定義して、そのテーブルにすでに存在するPROCEDUREかどうかを確認reg_idします。ある場合はUPDATEその行、そうでない場合INSERTは新しい行。 誰かがその書き込みに助けを私にしてくださいすることができますQUERY/をPROCEDURE?
14 mysql 

1
選択されたクエリにMySQLコミットデータが表示されない
コンテキスト:使用されるフレームワークはSpringであり、すべてのクエリはJdbcTemplateで実行されます。Mysqlサーバーのバージョンは5.6.19です。tableでありInnoDB table、デフォルトのようなauto commit分離レベル反復-読み取りが設定されていると。 問題:Insertトランザクション内で発生し、select挿入された同じデータを読み取ると、データが表示されません。select実行した後insertとした後、insertトランザクションが持ちますcommited。 mysqlでbinログと一般ログを有効にしました。以下の関連ログ bin-log: SET TIMESTAMP=1438265764/*!*/; BEGIN /*!*/; # at 249935389 #150730 14:16:04 server id 1 end_log_pos 249935606 CRC32 0xa6aca292 Query thread_id=40 exec_time=0 error_code=0 SET TIMESTAMP=1438265764/*!*/; insert into user_geo_loc_latest(user_id, lat, lng) values(x,y,z) on duplicate key update lat=y, lng=z /*!*/; # at 249935606 #150730 14:16:06 server id 1 end_log_pos …

5
eコマース注文表。価格を節約するか、監査/履歴テーブルを使用しますか?
初めてのeコマーススキーマを設計しています。私はしばらくの間このテーマについて読んでいますが、との関係について少し混乱order_line_itemしていますproduct A productを購入できます。さまざまな詳細がありますが、最も重要なのはunit_priceです。 Anがorder_line_itemへの外部キーがあるproduct_id、購入quantity購入しunit_priceた時点で、顧客が製品を購入します。 私が読んだもののほとんどは、を明示的に追加unit_priceするorder_line_item必要がある(つまり、を介して参照しないproduct_id)と述べています。店舗は将来的に価格を変更する可能性があり、注文レポート、追跡、整合性などを台無しにする可能性があるため、理にかなっています。 私が理解していないことは、なぜunit_price値を直接保存するのorder_line_itemですか? のunit_price変更を記録する監査/履歴テーブルを作成する方が良いproductでしょうか? ときにorder_line_item作成され、の外部キーproduct_auditテーブルが追加され、価格はそこから(参照によって)取得することができます。 このアプローチを使用することには多くの利点があるように思えます(データの重複、価格変更履歴など)。このアプローチを使用するeコマーススキーマの例に出くわしていませんが、何か不足していますか? UDPATE:私の質問はSlowly Changing Dimensionに関連しているようです。ただし、緩やかに変化するディメンションはデータウェアハウスとOLAPに関連しているため、私はまだ混乱しています。それで、Slowy Changing Dimensionタイプをメインのビジネストランザクションプロセスデータベース(OLTP)に適用できますか?私は多くの概念を混ぜているのだろうか、いくつかのガイダンスを大いに感謝します。

3
一時的なMEMORYテーブルを削除しない場合、どのくらい持続しますか(MySQL)
MySQLの再帰ストアドプロシージャを使用してという一時テーブルを生成してid_listいますが、フォローアップ選択クエリでそのプロシージャの結果を使用する必要があるためDROP、プロシージャ内で一時テーブルを使用できません... BEGIN; /* generates the temporary table of ID's */ CALL fetch_inheritance_groups('abc123',0); /* uses the results of the stored procedure in the WHERE */ SELECT a.User_ID FROM usr_relationships r INNER JOIN usr_accts a ON a.User_ID = r.User_ID WHERE r.Group_ID = 'abc123' OR r.Group_ID IN (SELECT * FROM id_list) GROUP BY …

2
マスター/スレーブレプリケーションの代わりにGalera Clusterを使用することの欠点は何ですか?
通常のマスター/スレーブレプリケーションの代わりにGalera Clusterを使用することの欠点は何ですか?Galeraの0スレーブラグタイム、同期レプリケーション、および単一障害点がないことは非常に魅力的であるように思われますが、なぜGaleraクラスターは一般的ではないのですか?

2
大きなmysqlテーブルにインデックスを追加する
テーブルがあります | base_schedule_line_items | CREATE TABLE base_schedule_line_items( idint(10)unsigned NOT NULL AUTO_INCREMENT、 installmentint(10)unsigned NOT NULL、 on_datedate NOT NULL、 actual_datedate DEFAULT NULL、 payment_typeint(11)NOT NULL、 scheduled_principal_outstandingdecimal(65,0)NOT NULL、 scheduled_principal_duedecimal(65,0) NOT NULL、 scheduled_interest_outstandingdecimal(65,0)NOT NULL、 scheduled_interest_duedecimal(65,0)NOT NULL、 currencyint(11)NOT NULL、 updated_atdatetime NOT NULL DEFAULT '2013-01-06 14:29:16'、 created_atdatetime NOT NULL DEFAULT ' 2013-01-06 14:29:16 '、 loan_base_schedule_idint(10)unsigned NOT NULL、 …

1
MySQLクエリによって実行されるI / O操作を推定する方法
AmazonのRDSでは、100万回のI / Oリクエストごとに約0.10ドルを支払います。トラフィックが非常に少ないデータベースに対して、非常に多数(数十万)のI / O要求が発生していることに気付きました。これを見て、さらに調査を行ったところ、6,000のユーザーWebサイトに対して、1か月に8億のI / O要求が発生し、1か月あたり約80ドルの費用がかかるという質問が見つかりました。 したがって、MySQLクエリが生成するI / O操作の数と、それらを最適化/最小化する方法を事前に知りたいです。クエリが実行するI / O操作の数を見積もる方法と、それらをできるだけ低く保つために従うことができる一般的な規則はありますか?
13 mysql 

3
単一のコマンドでデータベース内のすべてのテーブルを変更する
データベース内のすべてのテーブルを変更する単一または1行のコマンドはありますか。データベース内のすべてのテーブルでこのコマンドを発行したいと思います。 ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8; 私の目的は、すべてのテーブルの文字セットをlatin1からutf8に変更することです。 更新: RDBMSはMySQLです

1
どちらが良いですか:多くの結合条件または多くのwhere条件?
2つのクエリを比較しようとしています。 クエリ1: SELECT a,b,c,d,e FROM tableA LEFT JOIN tableB ON tableA.a=tableB.a WHERE tableA.b=tableB.b AND tableA.c=tableB.c AND tableA.d=tableB.d AND tableA.e=tableB.e クエリ2: SELECT a,b,c,d,e FROM tableA LEFT JOIN tableB ON tableA.a=tableB.a AND tableA.b=tableB.b AND tableA.c=tableB.c AND tableA.d=tableB.d WHERE tableA.e=tableB.e これら2つのクエリで同じ結果が得られると言ってもいいですか? さらに、最初のクエリが、より大きなWHERE条件を実行するためのより大きなテーブルを作成すると言うのは正しいですか?一方、2番目のケースでは、より単純なテーブルがWHERE適用されたシンプルなテーブルが作成されます。 結果が同じであると仮定すると、どのクエリを優先する必要がありますか?明らかなパフォーマンスの問題はありますか?

1
「log_queries_not_using_indexes」を有効にすると「long_query_time」が無効になりますか?
Mysqlでlog_queries_not_using_indexes、slow_query_logおよびを有効にするとlong_query_time、クエリ時間が5秒よりはるかに短い場合でも、生成されたスロークエリログファイルに多くのクエリが含まれることに気付きましたlong_query_time。 一度と思われlog_queries_not_using_indexes有効になっている、MySQLは関係なく「long_query_time」は何であるか、インデックスを使用していないではないすべてのクエリをログに記録します。 これを克服する方法はありますか?つまり、long_query_timeインデックスを使用しているかどうかに関係なく、時間がかかるすべてのクエリを記録する方法はありますか?

1
レプリケーション環境でのビンログの削除
レプリケーション環境でのバイナリログの削除について質問があります。 1つのマスターと2つのスレーブがある環境があります(mysql 5.5を実行しています)。場合によっては、処理時間が長いときにスペースの問題が発生し、binログディレクトリがいっぱいになることがあります。ログは3日ごとに期限切れになります。私は、すべてのボックス(マスターと両方のスレーブ)でログを3日間保持する必要があるのか​​疑問に思っていました。たとえば、マスターでは3日間、スレーブでは1日間ログを保持するのは理にかなっていますか?それを行う最善の方法は何ですか? ありがとうございました!

2
UPDATE後にUPDATEをトリガーしますか?
更新の時間を次のように記録するトリガーを作成します。 CREATE TRIGGER col_update AFTER UPDATE ON col FOR EACH ROW BEGIN UPDATE col SET updated=NOW() WHERE id=NEW.id; // or OLD.id END 問題は、このトリガーがupdated列を更新しようとすると、トリガーを実行する別の更新イベントでもあることです。これは無限ループを作成しますが、機能しません。 更新時間を対応する列に保存するにはどうすればよいですか? テーブルには多くの列があるため、トリガーを使用したいと思います。更新時間を手動で設定しようとすると、多くのクエリを変更する必要があります。

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