If you are using an extract, then by definition, NOTHING is hitting the database. All interaction between the visualizations and the data takes place in the extract.
The only time an extract hits the database is when you refresh the data.
Or do you mean, does Tableau query the extract each time a different user applies a filter?
Lets say 10 users run the same report, Does it hit the database for each user request?
As Michael stated, if you are using extracts then there will be zero calls to the DB. The calls would be to the extracts that live on Tableau server.
However, determining if Tableau will use cache or make a new request is dependent on a number of things (dashboard design, server configuration).
The topic at How does Tableau Caching actually works? may be helpful in determining your answer. Specifically the section below:
- Server cache is split down into four layers - Tile Cache, Model Cache, Abstract Cache and Query Cache
- Tile Cache: Cache of server side renders of workbooks & views. Used when the server shows static flat versions of views & thumbnails when navigating around. This cache is shared amongst all users who touch them (so not session specific). Probably taxes the vizql process a lot to produce these items so saves a large amount of processing to have them cached because these are commonly touched by a lot of users. Tableau will supposedly do some dark magic with default views and hiding some views behind a pre-rendered image(s) until its interacted with. Think of this as a static snapshot cache of your default views.
- Model Cache: "Next cache level down" from Tile Cache. Cache of data used to regenerate Tile Cache, but could be utilised on either the server or on the client-side. This is only used when there are no user filters in play. There's one Model cache per vizql process and is internal to the vizql processes.
- Abstract Cache: Data taken (included blended data) from Data sources is stored here. This cache can be pre-warmed (aka. Sith Techniques) by hitting visualisations (subscriptions work, as would API calls) because this cache is shared across visualisations. Filters, as always, aren't taken into account. Explaining the difference between this and the query cache is tricky but I think of it as though Tableau is trying to cache column data that exists in your visualisations, rather than a full data set.
- Query Cache - Native: The last place that Server will look before going away to the data source local to the server (or desktop). This is a store of data (the results sets) that's already been queried against a specific data sources already. Again, if a filter changes then the Native Cache can't be leveraged in a useful way. Queries against the native cache must match exactly before results can be pulled from there. This cache can be leveraged in desktop too.
- Query Cache - External: The last place that Server will look before going away to whatever external data source you're using. It is distributed across several of the background processes on server (and exists in desktop specifically for file-based data sources only). If server or desktop has to go away to an external data source (like a database table) this cache is consulted first, just like the native cache. This cache will live for 12 hours unless you specify a value in your Server Configuration settings (or choose the Refresh More Often option). In general, this is the only Cache that the Server Configuration tool has any control over. To my knowledge.
Hope this helps,