Thursday, February 27, 2014

Re: Terrible performance when dropping into raw SQL Oracle

Are you timing the query in the view specifically, or the entire view? That is, do you know for sure that it is *only* the query that is taking 16 seconds and not the rest of the view?

-scott

On Wednesday, February 26, 2014 5:53:15 PM UTC-5, Shawn H wrote:
I said that before testing it.  The exact same code using cx_Oracle takes ~4 seconds outside of the django environment, but still takes ~16 seconds when running in the django view.  What the heck is going on?  Updated portion of code below

cnxn = cx_Oracle.connect('notification/notifydev@landmgm')
cursor = cx_Oracle.Cursor(cnxn) #connections['landtest_11'].cursor()
print datetime.datetime.now()
cursor.execute('SELECT count(1) from (SELECT DISTINCT RECORDNUMB FROM DEVGIS.NOTICED_PARCELS WHERE CASE_NUMBER = &s AND RECORDNUMB > 0 UNION \
SELECT DISTINCT RECORDNUMB FROM DEVGIS.CONDONOTICE WHERE CASE_NUMBER = &s AND RECORDNUMB > 0)', [case_number, case_number])
print datetime.datetime.now()
number_count = cursor.fetchone()

On Wednesday, February 26, 2014 4:41:06 PM UTC-6, Shawn H wrote:
Because this worked so well, I've gone directly to cx_Oracle in my django view and used that to get the result in the 4 seconds.  There is definitely a problem with the Django implementation - I wonder if perhaps the indexes on the tables aren't being used properly.

On Wednesday, February 26, 2014 3:49:47 PM UTC-6, Shawn H wrote:
3.8 seconds.  It seems to be django, not cx_Oracle.

On Wednesday, February 26, 2014 2:50:58 PM UTC-6, Shawn H wrote:
Good idea.  I'll try that and report back

On Wednesday, February 26, 2014 1:22:52 PM UTC-6, Tom Evans wrote:
On Wed, Feb 26, 2014 at 6:16 PM, Shawn H <shawn....@gmail.com> wrote:
> Yes.  I've tested with several case numbers, and I'm using a similar
> parameterized approach in my gui Oracle client as well, with the same
> results.  It's always about 3 to 4 times slower running via django.  I've
> tried it both on my local development web server as well as my production
> apache linux box, and it always takes much longer running via django.
>
>

If you write a standard python program, ie not using django, but still
using whatever oracle DB adapter Django uses, that connects to your
oracle server and executes the query, is it still slow?

IE is the problem something django does, or how the adapter works.

Cheers

Tom

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/23506457-089b-4b1c-815c-c5ddbad79e32%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

No comments:

Post a Comment