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);
This commit is contained in:
Greg Von Kuster
2008-02-20 18:00:21 +00:00
parent ec358b7667
commit 64eff4ae67
+32 -32
View File
@@ -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)
)