Below, you can see that establishing the database connection itself to oracle is taking 1.8 seconds (connect() on the SQLA side). And a huge 2.9 seconds to fetch just 25 rows from your Oracle database (_fetchone_impl on the SQLA side, which calls cursor.fetchone(), a cx_oracle native function, directly). The total time spent waiting for results from cx_oracle, for a total of four statement executions (do_execute()), is .662 seconds.
So that is a total of 5.3 seconds spent entirely on the cx_oracle side of the equation, which is the time it's taking your oracle database to connect, execute four select statements, and fetch a total of 25 rows. 0.2 seconds remain which is the time actually spent within SQLA's reflection implementation. It seems you have an extremely slow network connection or an overloaded Oracle database. On Aug 28, 2008, at 10:26 AM, vkuznet wrote: > > Hi, > so I modified a code to use hotshot module, basically I added > > profiler = hotshot.Profile("profile.dat") > profiler.run("loadTables(tableNames)") > profiler.close() > > to my code instead of just calling loadTables function. Results are > below. I played with code a little bit and it seems to me that most of > the time spent in database/oracle.py, in reflecttable method of > OracleDialect class. > > Anyway, let me know if more profile is necessary. > Thank you, > Valentin. > > > create engine 0.11220407486 > engine.connect 1.89971590042 > SELECT table_name FROM all_tables WHERE owner='ZZZ' > get tables 0.155882120132 > Loading 'triggerpathdescription' table > 5.56913805008 > Load tables manually ['triggerpathdescription'] > load table 5.57045388222 > 1790 function calls (1717 primitive calls) in 5.570 CPU > seconds > > Ordered by: internal time, call count > > ncalls tottime percall cumtime percall > filename:lineno(function) > 25 2.933 0.117 2.933 0.117 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:1607(_fetchone_impl) > 1 1.809 1.809 1.809 1.809 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/strategies.py:76(connect) > 4 0.662 0.166 0.662 0.166 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/default.py:128(do_execute) > 1 0.146 0.146 0.147 0.147 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/pool.py:276(_finalize_fairy) > 2/1 0.002 0.001 3.611 3.611 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/databases/oracle.py:439(reflecttable) > 147/111 0.001 0.000 0.002 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:1590(_get_col) > 14 0.001 0.000 0.002 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:406(__init__) > 35 0.001 0.000 0.001 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/sql/compiler.py:1001(_requires_quotes) > 147 0.001 0.000 0.001 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/util.py:121(__getitem__) > 38 0.001 0.000 0.002 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/databases/oracle.py:366(_normalize_name) > 4 0.001 0.000 0.001 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:1423(_init_metadata) > 25 0.001 0.000 2.934 0.117 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:1641(fetchone) > 14 0.001 0.000 0.002 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:583(_set_parent) > 90 0.001 0.000 0.001 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/encodings/ > utf_8.py:15(decode) > 41 0.001 0.000 0.001 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/pool.py:442(__getattr__) > 16 0.000 0.000 0.001 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/sql/expression.py:2651(__init__) > 111 0.000 0.000 0.003 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:1338(__getitem__) > 10/1 0.000 0.000 0.001 0.001 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/sre_parse.py: > 374(_parse) > 11/1 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/sre_compile.py: > 27(_compile) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/pool.py:429(close) > 21 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:1299(__init__) > 11/1 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/sre_parse.py: > 140(getwidth) > 4 0.000 0.000 0.002 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/databases/oracle.py:216(get_result_proxy) > 72 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/sre_parse.py: > 182(__next) > 20 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/util.py:472(__setitem__) > 1 0.000 0.000 5.570 5.570 test.py:14(loadTables) > 2/1 0.000 0.000 5.567 5.567 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:1267(reflecttable) > 2/1 0.000 0.000 5.569 5.569 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:124(__init__) > 20 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/util.py:568(__setitem__) > 34 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/sql/expression.py:1574(__contains__) > 4 0.000 0.000 0.001 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/default.py:136(__init__) > 5 0.000 0.000 0.002 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:260(__extra_kwargs) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/default.py:217(proc) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:1502(close) > 4 0.000 0.000 0.665 0.166 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:851(_execute_text) > 14 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/sql/expression.py:1579(contains_column) > 27 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:1473(lookup_key) > 14 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/sql/expression.py:1517(replace) > 5/1 0.000 0.000 5.569 5.569 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:90(__call__) > 4 0.000 0.000 0.001 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:1118(append_element) > 20 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/util.py:615(__init__) > 16 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/types.py:319(to_instance) > 34 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/util.py:496(__contains__) > 6 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/sql/expression.py:1547(__setitem__) > 4 0.000 0.000 0.001 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py: > 946(__create_execution_context) > 60 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/sre_parse.py: > 201(get) > 2 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:1139(__init__) > 14 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:994(__contains__) > 4 0.000 0.000 0.001 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:1393(__init__) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:1063(__init__) > 2/1 0.000 0.000 0.001 0.001 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/sre_parse.py: > 301(_parse_sub) > 12 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/util.py:621(add) > 4 0.000 0.000 0.001 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:1111(_set_parent) > 2 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/threading.py: > 111(release) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:1469(_create_key_cache) > 14 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/util.py:499(get) > 5 0.000 0.000 0.002 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/sre.py: > 213(_compile) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:820(_set_parent) > 8 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/util.py:460(__init__) > 59 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/sre_parse.py: > 138(append) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/default.py:264(returns_rows_text) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:1123(_append_fk) > 14 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/util.py:466(__iter__) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/pool.py:351(cursor) > 68 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/sre_parse.py: > 130(__getitem__) > 3 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:232(_init_existing) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/databases/oracle.py:374(_denormalize_name) > 6 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:974(__init__) > 14 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/util.py:553(itervalues) > 16 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/sql/expression.py:1726(attr) > 4 0.000 0.000 0.662 0.166 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:953(_cursor_execute) > 8 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/sql/expression.py:1510(__init__) > 4 0.000 0.000 0.665 0.166 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:839(execute) > 5 0.000 0.000 0.002 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/sre.py: > 126(match) > 1 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/pool.py:167(return_conn) > 14 0.000 0.000 0.002 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:303(append_column) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:798(_autocommit) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:858(__distill_params) > 4 0.000 0.000 0.001 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/databases/oracle.py: > 355(create_execution_context) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/threadlocal.py:105(in_transaction) > 19 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:46(_init_items) > 14 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/util.py:550(values) > 10 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/util.py:475(__getitem__) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/default.py:204(__encode_param_keys) > 2 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/sql/expression.py:2736(__init__) > 26 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/types.py:159(dialect_impl) > 6 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/sql/expression.py:1538(add) > 2 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/threading.py: > 93(acquire) > 16 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:290(primary_key) > 1 0.000 0.000 1.810 1.810 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/pool.py:156(connect) > 1 0.000 0.000 1.810 1.810 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/threadlocal.py:16(get_connection) > 1 0.000 0.000 1.810 1.810 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/pool.py:578(do_get) > 4 0.000 0.000 0.663 0.166 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:912(__execute_raw) > 8 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/util.py:517(__init__) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/default.py:274(create_cursor) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:681(__init__) > 15 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/sre_parse.py: > 195(match) > 7 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:81(_get_table_key) > 1 0.000 0.000 0.002 0.002 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/sre_compile.py: > 490(compile) > 1 0.000 0.000 1.810 1.810 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/pool.py:302(__init__) > 2 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:284(_set_primary_key) > 4 0.000 0.000 0.002 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/default.py:283(result) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/types.py:373(__init__) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/default.py:270(should_autocommit_text) > 1 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/queue.py:81(put) > 5 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:272(__post_init) > 1 0.000 0.000 0.147 0.147 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/threadlocal.py:114(close) > 1 0.000 0.000 1.809 1.809 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/pool.py:261(__connect) > 11 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/sre_parse.py: > 90(__init__) > 1 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/sre_compile.py: > 356(_compile_info) > 1 0.000 0.000 1.810 1.810 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/pool.py:172(get) > 1 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/queue.py:124(get) > 1 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/threading.py: > 236(notify) > 1 0.000 0.000 0.147 0.147 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:816(close) > 1 0.000 0.000 0.001 0.001 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/sre_parse.py: > 658(parse) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/threadlocal.py:89(session) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/pool.py:422(__init__) > 1 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/threadlocal.py:171(session) > 26 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/types.py:180(result_processor) > 2 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:1175(add) > 2 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/sql/expression.py:1614(__init__) > 1 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/threadlocal.py:84(__init__) > 1 0.000 0.000 1.809 1.809 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/pool.py:199(__init__) > 4 0.000 0.000 0.001 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:308(append_constraint) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:573(connection) > 5 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/threading.py: > 672(currentThread) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/util.py:119(__init__) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:588(should_close_with_result) > 1 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:528(__init__) > 1 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/weakref.py: > 191(__init__) > 2 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:344(_set_parent) > 2 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/util.py:463(__len__) > 2 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/util.py:132(__init__) > 1 0.000 0.000 0.001 0.001 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/sre_compile.py: > 475(_code) > 1 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/weakref.py: > 77(__setitem__) > 1 0.000 0.000 1.810 1.810 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/threadlocal.py:179(contextual_connect) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/threadlocal.py:36(in_transaction) > 1 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/pool.py:565(do_return_conn) > 1 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/weakref.py: > 60(__contains__) > 1 0.000 0.000 0.147 0.147 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/pool.py:416(_close) > 1 0.000 0.000 5.570 5.570 <string>:1(?) > 1 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/weakref.py: > 186(__new__) > 1 0.000 0.000 0.147 0.147 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/pool.py:411(close) > 5 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/threading.py: > 44(_note) > 1 0.000 0.000 1.809 1.809 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/pool.py:137(create_connection) > 10 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/types.py:65(__init__) > 4 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:555(dialect) > 1 0.000 0.000 1.952 1.952 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:993(reflecttable) > 1 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/queue.py:185(_full) > 2 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/sre_compile.py: > 469(isstring) > 1 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/sre_parse.py: > 178(__init__) > 1 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:1939(_bind_or_error) > 1 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/pool.py:362(checkout) > 1 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/UserDict.py: > 19(__delitem__) > 3 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/sre_parse.py: > 126(__len__) > 1 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/pool.py:230(get_connection) > 1 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/base.py:1531(__iter__) > 1 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/queue.py:189(_put) > 2 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:279(_export_columns) > 1 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/threadlocal.py:12(__init__) > 1 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/engine/threadlocal.py:31(_conn_closed) > 1 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/threading.py: > 143(_is_owned) > 1 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/schema.py:1418(bind) > 1 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/sre_parse.py: > 67(__init__) > 1 0.000 0.000 0.000 0.000 /opt/local/lib/python2.4/ > site-packages/sqlalchemy/queue.py:181(_empty) > 1 0.000 0.000 0.000 0.000 /opt/local/Library/ > Frameworks/Python.framework/Versions/2.4/lib/python2.4/weakref.py: > 53(__getitem__) > 0 0.000 0.000 profile:0(profiler) > > > > On Aug 27, 5:16 pm, Michael Bayer <[EMAIL PROTECTED]> wrote: >> I have never observed 5 seconds to reflect a single table even with >> Oracle which tends to be the slowest for schema-level operations. >> The numbers you posted are too coarse grained to indicate where the >> time is being spent, and if it were within SA reflection code then >> these kinds of speed issues would be apparent across all dialects. >> Can you post some "profile" results for your tests ? >> >> On Aug 27, 2008, at 3:57 PM, vkuznet wrote: >> >> >> >>> Hi, >>> I've been trying to profile why loading a single table from remote >>> ORACLE DB takes more then 5 seconds. >>> Here is some numbers: >> >>> create engine 0.0740728378296 >>> engine.connect 2.05604815483 >>> SELECT table_name FROM all_tables WHERE owner='ZZZ' >>> get tables 0.18466091156 >>> Loading 'triggerpathdescription' table >>> 5.85890698433 >>> Load tables manually ['triggerpathdescription'] >>> load table 5.85950708389 >> >>> It looks like SQLAlchemy takes 25 fetchone calls in order to >>> autoload >>> table, but I tweak a code for ORACLE engine to use fetchmany and >>> just >>> slighly reduced the total time. To me it's WAY to long and as far >>> as I >>> can tell it internals of building foreign-key relationships. So I >>> wonder if there is a way to speed up such auto load. >> >>> I'm attaching a simple test code below. >>> Thanks, >>> Valentin. >> >>> #!/usr/bin/env python >> >>> import sqlalchemy,types,sys,os,time >> >>> def loadTables(tableNames): >>> for tName in tableNames: >>> t = tName[0].lower().split(".")[-1] >>> print "Loading '%s' table"%t >>> t1=time.time() >> >>> tables >>> [t >>> ]= >>> sqlalchemy >>> .Table >>> (t >>> ,dbMeta >>> ,autoload=True,schema=schema,oracle_renyms=True,useexisting=True) >>> print time.time()-t1 >>> break >> >>> print "Load tables manually",tables.keys() >> >>> schema = 'ZZZ' >>> t1 = time.time() >>> engine = sqlalchemy.create_engine('oracle:// >>> XXX:[EMAIL PROTECTED]',strategy='threadlocal',threaded=True) >>> print "create engine",time.time()-t1 >>> t1 = time.time() >> >>> con = engine.connect() >> >>> print "engine.connect",time.time()-t1 >>> t1 = time.time() >>> tables={} >>> dbMeta = sqlalchemy.MetaData() >>> dbMeta.bind = engine >> >>> idx = 0 >>> query="SELECT table_name FROM all_tables WHERE owner='%s'"%schema >>> print query >>> tableNames=con.execute(query) >>> print "get tables",time.time()-t1 >>> t1 = time.time() >> >>> loadTables(tableNames) >> >>> print "load table",time.time()-t1 >>> t1 = time.time() > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---