4D-JUG
Would you like to react to this message? Create an account in a few clicks or log in to continue.

SQLを実行すると遅くなる

2 posters

Go down

SQLを実行すると遅くなる Empty SQLを実行すると遅くなる

投稿 by hosaka 2017-06-13, 1:16 pm

v13で4DServer上でSQLをつかってデータをMySQLへ書き出す処理を書いたのですが、件数が予想よりおおかったらしく処理に時間がかかっていました。
ここまでは良いのですが、その実行中4D Serverの動作が全体的に遅くなり、接続しているクライアントまで影響を受けました。
こんなものなんでしょうか?SQLってプリエンティブだったと思うのですが...

もしかするとv15及びv16あたりでは改善されているのでしょうか。
hosaka
hosaka

投稿数 : 241
登録日 : 2016/07/04
所在地 : 大阪

トップに戻る Go down

SQLを実行すると遅くなる Empty Re: SQLを実行すると遅くなる

投稿 by miyako 2017-06-14, 4:22 am

SQLが「プリエンプティブ」なのは,サーバー処理,つまり,4Dのデータベースに対して同時に複数のSQLリクエストが投じられた場合,それらを並行処理できるという意味です。SQLコマンドの実行(クライアント処理)はコオペラティブです。Begin SQL/End SQL・SQL EXECUTE・SQL LOGINなどのコマンドは,「スレッドセーフ」コマンドでもないことに留意してください。

http://doc.4d.com/4Dv16R2/4D/16-R2.1620/Begin-SQL.301-3111493.ja.html
http://doc.4d.com/4Dv16R2/4D/16-R2.1620/SQL-EXECUTE.301-3111487.ja.html
http://doc.4d.com/4Dv16R2/4D/16-R2.1620/SQL-LOGIN.301-3111490.ja.html

SQLコマンド(クライアント処理)を実行している間,コオペラティブスレッドで実行されなければならない,その他の処理は,タイムスライスを奪われることになります。

miyako

投稿数 : 483
登録日 : 2016/07/05

トップに戻る Go down

SQLを実行すると遅くなる Empty Re: SQLを実行すると遅くなる

投稿 by hosaka 2017-06-14, 9:54 am

ご説明ありがとうございます。
SQLコマンド自体は、プリエンティブでもスレッドセーフでもないんですね。
そうすると、ストアドなどでSQLを含むコードを実行すると、4D Server/Client全体を遅くしてしまうということですね。

ドキュメントをみてみたのですが、スレッドセーブについての記述がみつかりませんでした。
スレッドセーブのコマンドとそうでないコマンドはどのように見分ければよいのでしょうか?
SQLで記述しているコードは、4Dコードに書き換えた方がよいのでしょうか。
hosaka
hosaka

投稿数 : 241
登録日 : 2016/07/04
所在地 : 大阪

トップに戻る Go down

SQLを実行すると遅くなる Empty Re: SQLを実行すると遅くなる

投稿 by hosaka 2017-06-14, 11:00 am

http://doc.4d.com/4Dv16R2/4D/16-R2.1620/Preemptive-4D-processes.300-3111846.ja.html
ここに説明がありました。
プリエンティブとスレッドセーフは、一応同一ということのようですね。
hosaka
hosaka

投稿数 : 241
登録日 : 2016/07/04
所在地 : 大阪

トップに戻る Go down

SQLを実行すると遅くなる Empty Re: SQLを実行すると遅くなる

投稿 by miyako 2017-06-14, 11:08 am

スレッドセーフコマンドは,ドキュメント上でアイコンが表示されています。

SQLを実行すると遅くなる Iidddi12

アイコンをクリックすると,一覧ページに飛ぶことができます。

Command nameで属性情報を取得することもできます。

参考:スライド#28

https://www.slideshare.net/kmiyako/4d-world-tour-2017

miyako

投稿数 : 483
登録日 : 2016/07/05

トップに戻る Go down

SQLを実行すると遅くなる Empty Re: SQLを実行すると遅くなる

投稿 by hosaka 2017-06-14, 11:15 am

考えたのですが今回の事案のような場合には、4D Server上でストアドするのをやめて、
別途更新用の4Dストラクチャを作って4D Serverからデータを取得してMySQLへ書き込むのが良いみたいですね。
hosaka
hosaka

投稿数 : 241
登録日 : 2016/07/04
所在地 : 大阪

トップに戻る Go down

SQLを実行すると遅くなる Empty Re: SQLを実行すると遅くなる

投稿 by hosaka 2017-06-26, 10:56 am

MySQLには、INSERT文の構文として’ON DUPLICATE KEY UPDATE’というのがあるのですが、これ便利ですね。
なければ追加、あれば更新というのが1行ですみます。4DのSQLにも導入してくれないかな。 Cool
hosaka
hosaka

投稿数 : 241
登録日 : 2016/07/04
所在地 : 大阪

トップに戻る Go down

SQLを実行すると遅くなる Empty Re: SQLを実行すると遅くなる

投稿 by miyako 2017-07-13, 10:27 am

こちらにFRを作成しました pig

http://forums.4d.fr/Post//19680848/1/

miyako

投稿数 : 483
登録日 : 2016/07/05

トップに戻る Go down

SQLを実行すると遅くなる Empty Re: SQLを実行すると遅くなる

投稿 by hosaka 2017-07-13, 10:36 am

リクエストありがとうございました。
hosaka
hosaka

投稿数 : 241
登録日 : 2016/07/04
所在地 : 大阪

トップに戻る Go down

SQLを実行すると遅くなる Empty Re: SQLを実行すると遅くなる

投稿 by Sponsored content


Sponsored content


トップに戻る Go down

トップに戻る


 
Permissions in this forum:
返信投稿: 不可