SQLを実行すると遅くなる

前のトピックを表示 次のトピックを表示 Go down

SQLを実行すると遅くなる

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

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

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

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

トップに戻る Go down

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

投稿 by miyako on 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

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

トップに戻る Go down

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

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

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

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

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

トップに戻る Go down

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

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

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

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

トップに戻る Go down

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

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

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



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

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

参考:スライド#28

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

miyako

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

トップに戻る Go down

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

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

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

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

トップに戻る Go down

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

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

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

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

トップに戻る Go down

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

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

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

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

miyako

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

トップに戻る Go down

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

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

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

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

トップに戻る Go down

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

投稿 by Sponsored content


Sponsored content


トップに戻る Go down

前のトピックを表示 次のトピックを表示 トップに戻る


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