From 64eff4ae672d163218c27d0ed24dcec81bf43c13 Mon Sep 17 00:00:00 2001 From: Greg Von Kuster Date: Wed, 20 Feb 2008 18:00:21 +0000 Subject: [PATCH] Added indexes for foreign keys (postgres doesn't handle this implicitly), optional DB schema update to improve performance. Indexes needed based on schema foreign keys: # History table CREATE INDEX ix_history_user_id ON history USING btree(user_id); CREATE INDEX ix_history_update_time ON history USING btree(update_time); CREATE INDEX ix_history_deleted ON history USING btree(deleted); CREATE INDEX ix_history_purged ON history USING btree(purged); # Dataset table CREATE INDEX ix_dataset_history_id ON dataset USING btree(history_id); CREATE INDEX ix_dataset_update_time ON dataset USING btree(update_time); CREATE INDEX ix_dataset_deleted ON dataset USING btree(deleted); CREATE INDEX ix_dataset_purged ON dataset USING btree(purged); CREATE INDEX ix_dataset_filename_id ON dataset USING btree(filename_id); # Dataset_child_association table CREATE INDEX ix_dataset_child_association_child_dataset_id ON dataset_child_association USING btree(child_dataset_id); CREATE INDEX ix_dataset_child_association_parent_dataset_id ON dataset_child_association USING btree(parent_dataset_id); # Validation_error table CREATE INDEX ix_validation_error_dataset_id ON validation_error USING btree(dataset_id); # Job table CREATE INDEX ix_job_history_id ON job USING btree(history_id); CREATE INDEX ix_job_session_id ON job USING btree(session_id); # Job_parameter table CREATE INDEX ix_job_parameter_job_id ON job_parameter USING btree(job_id); # Job_to_input_dataset table CREATE INDEX ix_job_to_input_dataset_dataset_id ON job_to_input_dataset USING btree(dataset_id); CREATE INDEX ix_job_to_input_dataset_job_id ON job_to_input_dataset USING btree(job_id); # Job_to_output_dataset table CREATE INDEX ix_job_to_output_dataset_dataset_id ON job_to_output_dataset USING btree(dataset_id); CREATE INDEX ix_job_to_output_dataset_job_id ON job_to_output_dataset USING btree(job_id); # Event table CREATE INDEX ix_event_history_id ON event USING btree(history_id); CREATE INDEX ix_event_session_id ON event USING btree(session_id); CREATE INDEX ix_event_user_id ON event USING btree(user_id); # Galaxy_session table CREATE INDEX ix_galaxy_session_user_id ON galaxy_session USING btree(user_id); # Galaxy_session_to_history table CREATE INDEX ix_galaxy_session_to_history_history_id ON galaxy_session_to_history USING btree(history_id); CREATE INDEX ix_galaxy_session_to_history_session_id ON galaxy_session_to_history USING btree(session_id); # Stored_workflow table CREATE INDEX ix_stored_workflow_latest_workflow_id ON stored_workflow USING btree(latest_workflow_id); CREATE INDEX ix_stored_workflow_user_id ON stored_workflow USING btree(user_id); # Workflow table CREATE INDEX ix_workflow_stored_workflow_id ON workflow USING btree(stored_workflow_id); # Workflow_step table CREATE INDEX ix_workflow_step_workflow_id ON workflow_step USING btree(workflow_id); # Workflow_step_connection table CREATE INDEX ix_workflow_step_connection_input_step_id ON workflow_step_connection USING btree(input_step_id); CREATE INDEX ix_workflow_step_connection_output_step_id ON workflow_step_connection USING btree(output_step_id); --- lib/galaxy/model/mapping.py | 64 ++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/lib/galaxy/model/mapping.py b/lib/galaxy/model/mapping.py index cafdb4e0bd3..b740377520f 100644 --- a/lib/galaxy/model/mapping.py +++ b/lib/galaxy/model/mapping.py @@ -48,12 +48,12 @@ User.table = Table( "galaxy_user", metadata, History.table = Table( "history", metadata, Column( "id", Integer, primary_key=True), Column( "create_time", DateTime, default=now ), - Column( "update_time", DateTime, default=now, onupdate=now ), - Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ) ), + Column( "update_time", DateTime, index=True, default=now, onupdate=now ), + Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ), Column( "name", TrimmedString( 255 ) ), Column( "hid_counter", Integer, default=1 ), - Column( "deleted", Boolean, default=False ), - Column( "purged", Boolean, default=False ), + Column( "deleted", Boolean, index=True, default=False ), + Column( "purged", Boolean, index=True, default=False ), Column( "genome_build", TrimmedString( 40 ) ) ) # model.Query.table = Table( "query", engine, @@ -66,9 +66,9 @@ History.table = Table( "history", metadata, Dataset.table = Table( "dataset", metadata, Column( "id", Integer, primary_key=True ), Column( "create_time", DateTime, default=now ), - Column( "update_time", DateTime, default=now, onupdate=now ), + Column( "update_time", DateTime, index=True, default=now, onupdate=now ), Column( "hid", Integer ), - Column( "history_id", Integer, ForeignKey( "history.id" ) ), + Column( "history_id", Integer, ForeignKey( "history.id" ), index=True ), Column( "name", TrimmedString( 255 ) ), Column( "info", TrimmedString( 255 ) ), Column( "blurb", TrimmedString( 255 ) ), @@ -79,10 +79,10 @@ Dataset.table = Table( "dataset", metadata, Column( "metadata", MetadataType(), key="_metadata" ), Column( "parent_id", Integer, nullable=True ), Column( "designation", TrimmedString( 255 ) ), - Column( "deleted", Boolean, default=False ), - Column( "purged", Boolean, default=False ), + Column( "deleted", Boolean, index=True, default=False ), + Column( "purged", Boolean, index=True, default=False ), Column( "visible", Boolean ), - Column( "filename_id", Integer, ForeignKey( "dataset_filename.id" ), nullable=True ), + Column( "filename_id", Integer, ForeignKey( "dataset_filename.id" ), index=True, nullable=True ), Column( 'file_size', Numeric( 15, 0 ) ), ForeignKeyConstraint(['parent_id'],['dataset.id'], ondelete="CASCADE") ) @@ -96,22 +96,22 @@ DatasetFileName.table = Table( "dataset_filename", metadata, ValidationError.table = Table( "validation_error", metadata, Column( "id", Integer, primary_key=True ), - Column( "dataset_id", Integer, ForeignKey( "dataset.id" ) ), + Column( "dataset_id", Integer, ForeignKey( "dataset.id" ), index=True ), Column( "message", TrimmedString( 255 ) ), Column( "err_type", TrimmedString( 64 ) ), Column( "attributes", TEXT ) ) DatasetChildAssociation.table = Table( "dataset_child_association", metadata, Column( "id", Integer, primary_key=True ), - Column( "parent_dataset_id", Integer, ForeignKey( "dataset.id" ) ), - Column( "child_dataset_id", Integer, ForeignKey( "dataset.id" ) ), + Column( "parent_dataset_id", Integer, ForeignKey( "dataset.id" ), index=True ), + Column( "child_dataset_id", Integer, ForeignKey( "dataset.id" ), index=True ), Column( "designation", TrimmedString( 255 ) ) ) - + Job.table = Table( "job", metadata, Column( "id", Integer, primary_key=True ), Column( "create_time", DateTime, default=now ), Column( "update_time", DateTime, default=now, onupdate=now ), - Column( "history_id", Integer, ForeignKey( "history.id" ) ), + Column( "history_id", Integer, ForeignKey( "history.id" ), index=True ), Column( "tool_id", String( 255 ) ), Column( "tool_version", String, default="1.0.0" ), Column( "state", String( 64 ) ), @@ -121,43 +121,43 @@ Job.table = Table( "job", metadata, Column( "stdout", String() ), Column( "stderr", String() ), Column( "traceback", String() ), - Column( "session_id", Integer, ForeignKey( "galaxy_session.id" ), nullable=True ), + Column( "session_id", Integer, ForeignKey( "galaxy_session.id" ), index=True, nullable=True ), Column( "job_runner_name", String( 255 ) ), Column( "job_runner_external_id", String( 255 ) ) ) JobParameter.table = Table( "job_parameter", metadata, Column( "id", Integer, primary_key=True ), - Column( "job_id", Integer, ForeignKey( "job.id" ) ), + Column( "job_id", Integer, ForeignKey( "job.id" ), index=True ), Column( "name", String(255) ), Column( "value", TEXT ) ) JobToInputDatasetAssociation.table = Table( "job_to_input_dataset", metadata, Column( "id", Integer, primary_key=True ), - Column( "job_id", Integer, ForeignKey( "job.id" ) ), - Column( "dataset_id", Integer, ForeignKey( "dataset.id" ) ), + Column( "job_id", Integer, ForeignKey( "job.id" ), index=True ), + Column( "dataset_id", Integer, ForeignKey( "dataset.id" ), index=True ), Column( "name", String(255) ) ) JobToOutputDatasetAssociation.table = Table( "job_to_output_dataset", metadata, Column( "id", Integer, primary_key=True ), - Column( "job_id", Integer, ForeignKey( "job.id" ) ), - Column( "dataset_id", Integer, ForeignKey( "dataset.id" ) ), + Column( "job_id", Integer, ForeignKey( "job.id" ), index=True ), + Column( "dataset_id", Integer, ForeignKey( "dataset.id" ), index=True ), Column( "name", String(255) ) ) Event.table = Table( "event", metadata, Column( "id", Integer, primary_key=True ), Column( "create_time", DateTime, default=now ), Column( "update_time", DateTime, default=now, onupdate=now ), - Column( "history_id", Integer, ForeignKey( "history.id" ), nullable=True ), - Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), nullable=True ), + Column( "history_id", Integer, ForeignKey( "history.id" ), index=True, nullable=True ), + Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True, nullable=True ), Column( "message", TrimmedString( 1024 ) ), - Column( "session_id", Integer, ForeignKey( "galaxy_session.id" ), nullable=True ), + Column( "session_id", Integer, ForeignKey( "galaxy_session.id" ), index=True, nullable=True ), Column( "tool_id", String( 255 ) ) ) GalaxySession.table = Table( "galaxy_session", metadata, Column( "id", Integer, primary_key=True ), Column( "create_time", DateTime, default=now ), Column( "update_time", DateTime, default=now, onupdate=now ), - Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), nullable=True ), + Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True, nullable=True ), Column( "remote_host", String( 255 ) ), Column( "remote_addr", String( 255 ) ), Column( "referer", TEXT ) ) @@ -165,16 +165,16 @@ GalaxySession.table = Table( "galaxy_session", metadata, GalaxySessionToHistoryAssociation.table = Table( "galaxy_session_to_history", metadata, Column( "id", Integer, primary_key=True ), Column( "create_time", DateTime, default=now ), - Column( "session_id", Integer, ForeignKey( "galaxy_session.id" ) ), - Column( "history_id", Integer, ForeignKey( "history.id" ) ) ) + Column( "session_id", Integer, ForeignKey( "galaxy_session.id" ), index=True ), + Column( "history_id", Integer, ForeignKey( "history.id" ), index=True ) ) StoredWorkflow.table = Table( "stored_workflow", metadata, Column( "id", Integer, primary_key=True ), Column( "create_time", DateTime, default=now ), Column( "update_time", DateTime, default=now, onupdate=now ), - Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), nullable=False ), + Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True, nullable=False ), Column( "latest_workflow_id", Integer, - ForeignKey( "workflow.id", use_alter=True, name='stored_workflow_latest_workflow_id_fk' ) ), + ForeignKey( "workflow.id", use_alter=True, name='stored_workflow_latest_workflow_id_fk' ), index=True ), Column( "name", String ), Column( "deleted", Boolean, default=False ), ) @@ -183,7 +183,7 @@ Workflow.table = Table( "workflow", metadata, Column( "id", Integer, primary_key=True ), Column( "create_time", DateTime, default=now ), Column( "update_time", DateTime, default=now, onupdate=now ), - Column( "stored_workflow_id", Integer, ForeignKey( "stored_workflow.id" ), nullable=False ), + Column( "stored_workflow_id", Integer, ForeignKey( "stored_workflow.id" ), index=True, nullable=False ), Column( "name", String ), Column( "has_cycles", Boolean ), Column( "has_errors", Boolean ) @@ -193,7 +193,7 @@ WorkflowStep.table = Table( "workflow_step", metadata, Column( "id", Integer, primary_key=True ), Column( "create_time", DateTime, default=now ), Column( "update_time", DateTime, default=now, onupdate=now ), - Column( "workflow_id", Integer, ForeignKey( "workflow.id" ), nullable=False ), + Column( "workflow_id", Integer, ForeignKey( "workflow.id" ), index=True, nullable=False ), Column( "tool_id", String ), Column( "tool_version", String ), # Reserved for future Column( "tool_inputs", JSONType ), @@ -205,8 +205,8 @@ WorkflowStep.table = Table( "workflow_step", metadata, WorkflowStepConnection.table = Table( "workflow_step_connection", metadata, Column( "id", Integer, primary_key=True ), - Column( "output_step_id", Integer, ForeignKey( "workflow_step.id" ) ), - Column( "input_step_id", Integer, ForeignKey( "workflow_step.id" ) ), + Column( "output_step_id", Integer, ForeignKey( "workflow_step.id" ), index=True ), + Column( "input_step_id", Integer, ForeignKey( "workflow_step.id" ), index=True ), Column( "output_name", String ), Column( "input_name", String) )