Okay, since i'm busy creating a fairly heavy multisite (W.I.P.) let me share some research i've done about shared database tables etc.
We're starting with a multisite that has different content on each site, but are using the same userbase for each site, we're operating from a single database
We're starting from the drupal core essentials perspective, meaning we start with no modules enabled besides drupal required core.
seeing that drupal has 40 database tables, it can take some time to understand the implications of each table
- access - you probaly want this table shared, since this is your access rules table, altrough seperation is possible if you want your content-admins to manage this. (but if you ban a person, you probaly want to ban him all over your multi-site.)
- authmap - more info needed
- blocks - this is a table you want to seperate, since every multisite (and theme) can have a different block setting and this table is NOT multisite aware
- blocks_roles - more info needed
- boxes - more info needed
- cache & cache_* - Keep this set of tables sepeate, since different sites can have different contents cached and those tables are NOT multisite aware, also seperation leads to a smaller cache (per-site) meaning faster response.
- Comments - keep this table seperated, since comment are content specific and each site can have different contents and this table is NOT multisite aware
- boxes - more info needed
- files & file_revisions - you want these seperated because attached files are content specific and each site can have different contents and those tables are NOT multisite aware
- filters - You probaly want to share this table, since this hold only the combinations of filter that make up the formats
- filter_formats - You probaly want to share this table, since the only thing stored here is which filter formats are availble for the sites and which roles can use them.
- flood - more info needed
- history - more info needed
- menu - simple, seperate, since different sites have different layout, and this table is NOT multisite aware
- node - simple, seperate, since different sites have different content and this table is NOT multisite aware
- node_* - more info needed
- permission & role - you probaly want this shared, since this way similar roles behave similar on all sites
- sequences - this table MUST BE SHARED since this table tracks all tables including shared tables and this table IS multisite aware
- sessions - as far as i can see, you can safely share this table. more info needed (there are modules that require this table shared.)
- system - This table MUST BE SEPERATED since it consist of site specific settings (enabled modules etc.)
- users - this table is shared... doh, that's the whole point here...
- term_* - more info needed
- Url_alias - you want this table seperated, since different sites can have similar alias to different content, and this table is NOT multisite aware, also speeds up site if seperated.
- Users_roles - This table is seperated because different users can have different functions on different sites and this table is NOT multisite aware
- Variable - This table MUST BE SEPERATED since it consist of site specific settings (sitename, slogan etc.)
- Vocabulary & Vocabulary_node_type- more info needed
- Watchdog - depends on your likings, suggesting to seperate but can be shared since this table IS multisite aware
a quick recap, the following tables are shared:
I would suggest to install always the following modules on any multisite config:
- Single Sign-On - Logs you in in all sites at the same time
- Paranoia - disallowes PHP usage in content etc.