Scott Elliott / Engineering field guide

A carrier field guide to TMS database bottlenecks

An engineering field guide to measuring TMS database, application and integration waits before selecting a remedy.

Diagnose the wait before choosing the remedy

A slow dispatch screen, long billing batch and delayed integration can look like one problem to an operator. They can arise from different boundaries: application processing, database execution, lock waits, storage, a remote API or the browser itself. A reliable investigation begins with a specific operating action and a measured timeline. Adding a server before measuring that path can move cost without addressing the constraint.

This company-authored field guide describes an engineering method. It is not an independent performance benchmark, a claim about a named customer's database or a promise of sub-second results. Use approved access and a controlled test process. Do not send production credentials, driver personal information or confidential customer rates through a public inquiry form.

Establish one representative operating scenario

Select a workflow with an accountable owner: loading the dispatch board for a terminal, preparing a billing batch, opening a customer rate history or reconciling settlement. Record the input scope, expected result, user permissions, time window and concurrency. A test of ten rows in an empty environment does not establish the behavior of a busy operating board.

Separate ordinary and exceptional cases. A screen may be fast for today's active loads and slow for a year of unbounded history. A batch may spend most of its time waiting on an external accounting service. A query may be fast alone and block behind a long transaction during the operating shift. The investigation should reproduce the condition that matters to the carrier.

Instrument the full path

Give the request a correlation identifier across the application, database call and external integration. Record timing at each boundary without exposing sensitive payloads in general logs. Distinguish database elapsed time from application queueing and remote waits. If the database completes quickly while the screen remains slow, a database-only remedy is not justified by that evidence.

Retain the product version, schema version, test data size, parameter values or approved parameter categories, concurrency and resource allocation. State whether the run is cold or warm. Report a distribution of elapsed times and failures, not only the best successful request. Include the operator-visible completion point in the measurement boundary.

Query plans and cardinality

For a database-bound query, inspect the actual access pattern and the evidence available through the approved diagnostic tools. Large scans, poor estimates, expensive sorting and repeated lookups can be relevant, but a scan is not automatically wrong and an index seek is not automatically fast. Compare estimated and observed row behavior in the context of the returned result and data distribution.

Parameter variation matters. One customer may have a few active orders while another has years of dense history. A plan appropriate to one case may perform poorly for another. Capture representative cases before selecting an indexing or recompilation strategy. A broad rule such as add an index to every filtered column can increase write cost and create another maintenance problem.

Blocking and transaction boundaries

A long wait may reflect a transaction holding resources rather than expensive computation. Identify the blocking chain, the business action owning the transaction and the expected release point. Do not resolve an operating incident by routinely terminating sessions without understanding the consequences for in-flight work and reconciliation.

Keep remote calls out of unnecessarily long database transactions. If an operation must coordinate a local commit and an external side effect, define durable intent and reconciliation. A transaction held open while a remote service stalls can affect unrelated dispatch and billing work. Changing isolation or snapshot behavior requires a reviewed design and testing of correctness as well as throughput.

Index changes need a workload view

A useful index supports the actual join, filter and ordering pattern while respecting write volume and storage. Evaluate existing overlapping indexes, selectivity, statistics and the cost of maintaining the new structure. Consider whether the application is requesting unnecessary columns or an unbounded result before adding another access path.

Test the proposed change against dispatch, billing, settlement and ingestion workloads that share the tables. A faster read can make a heavily written event table more expensive to maintain. Record the deployment method, expected lock or resource effects, rollback plan and observation window. Do not apply a generated index recommendation directly to a live carrier database without the authorized review.

Bounded results and operator intent

A board designed for active work should not fetch every historical shipment merely to render the first visible page. Use the actual operating scope, stable pagination and explicit ordering. Define how new records, corrections and user filters affect page continuity. A limit without a stable order can create missing or repeated work in the interface.

Archival and partitioning strategies should follow retention, access and workload requirements. Moving records out of an active path must not make a disputed invoice or historical settlement impossible to explain. Keep the relationships and supporting documents retrievable through an approved history interface.

Billing and settlement correctness come first

A fast calculation is not useful if it selects the wrong tariff revision, loses units or changes rounding order. Before optimizing a rating query, retain approved test examples and calculation traces. Compare the result before and after the change. Include ambiguous matches and records that should be rejected, not only successful prices.

For a batch, track work identity and progress so recovery does not restart every external action blindly. A local success flag written before remote confirmation can lie; a remote success followed by a local timeout can lead to duplication. Use stable action identities and a reconciliation path appropriate to the external interface. REST alone does not establish idempotency.

Integration latency is a separate design problem

An accounting or telematics API can impose rate limits, pagination, eventual consistency and authorization expiry. Measure the remote boundary and preserve enough state to resume safely. A synchronous screen that waits for every remote page may feel like a database problem even when the database is not the constraint.

Use controlled backoff and a durable queue where appropriate. Preserve unknown outcomes instead of assuming failure means nothing happened. A status page should distinguish waiting, confirmed, rejected and reconciliation-required states. Operators need a next action and an owner when a remote system is unavailable.

Rehearse the change with the operating team

Agree on an acceptance packet before modifying the system: representative inputs, expected financial results, concurrency, measured boundary, percentile targets, error limits and rollback criteria. Include the dispatch and finance owners who can identify an incorrect business result. An engineer's successful local query is not the same as accepted operating behavior.

After the change, compare the same workload and conditions. Record any improved path, unchanged path and regression. Repeat only when a new change or unresolved condition justifies it. Preserve the evidence with the release so the carrier can explain why the change was accepted and what would trigger a rollback.

A focused next step

Choose one recurring slowdown and identify the operating owner, reproduction case and current measurements. A short architecture discussion with Scott Elliott can define which evidence to collect and which boundary to test first. The useful output is a scoped investigation or demonstration, not a server purchase or replacement recommendation made before the bottleneck is understood.

EXSPEEDITE's commercial discussion should connect performance to the work the carrier needs to finish: dispatch, rating, documents, settlement and accounting. Strong Tower Consulting, LLC and Exspeedite LLC are separately organized sister companies under common ownership. The responsible contracting entity and implementation scope should be clear in any proposed engagement.

Primary technical references

Microsoft Query Store documentation describes query, plan and runtime-history evidence. Microsoft index design guidance provides the database-specific reference for index decisions. Microsoft blocking guidance supports investigation of blocking chains. Apply the documentation for the actual engine and version; this field guide does not authorize a live configuration change.