Skip to content

Commit

Permalink
The tspemaj tablespace has no specific processing anymore. If it exis…
Browse files Browse the repository at this point in the history
…ts, it will be used to hold E-Maj tables/indexes as any other tablespace, either by being set as default tablespace at installation or group creation time or being specified as log data tablespace or log index tablespace into the emaj_group_def table. This was a leftover from old E-Maj versions that would uselessly brings complexity to future evolutions.
  • Loading branch information
beaud76 committed Mar 12, 2017
1 parent 9a76ad0 commit 9f0433f
Show file tree
Hide file tree
Showing 80 changed files with 4,789 additions and 2,108 deletions.
5 changes: 5 additions & 0 deletions CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@ E-Maj - Release notes
<NEXT_VERSION>
------
Enhancements:
- the tspemaj tablespace has no specific processing anymore. If it exists,
it will be used to hold E-Maj tables/indexes as any other tablespace,
either by being set as default tablespace at installation or group
creation time or being specified as log data tablespace or log index
tablespace into the emaj_group_def table.
- improve the checks performed on tables groups: verify that application
tables have not been altered as UNLOGGED after their tables group creation.
- forbid tables declared as WITH OIDS into tables groups.
Expand Down
8 changes: 2 additions & 6 deletions docs/en/architecture.rst
Original file line number Diff line number Diff line change
Expand Up @@ -111,11 +111,7 @@ Only one technical object is not located into the emaj schema: the event trigger
Tablespaces
***********

E-Maj provides three potential ways to handle **tablespaces**.
When the extension is installed, the E-Maj technical tables are stored into the default tablespace set at instance or database level or explicitely set for the current session.

When the extension is installed and when log tables are created, E-Maj can use the default tablespace.

But it is also possible to create a dedicated tablespace named *tspemaj*. If it exists when the extension is installed or when a tables group is created, it will be used to hold new tables.

Using :ref:`tables group parameters <emaj_group_def>`, it is also possible to store log tables and/or their index into specific tablespaces.
The same rule applies for log tables and index. But using :ref:`tables group parameters <emaj_group_def>`, it is also possible to store log tables and/or their index into specific tablespaces.

2 changes: 1 addition & 1 deletion docs/en/impactsAdmin.rst
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Saving and restoring the database
File level saves and restores
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

When saving or restoring clusters at file level, it is essential to save or restore **ALL** cluster files. This includes of course all files from the *tspemaj* tablespace, if it exists.
When saving or restoring clusters at file level, it is essential to save or restore **ALL** cluster files, including those stored on dedicated tablespaces.

After a file level restore, tables groups are in the very same state as at the save time, and the database activity can be restarted without any particular E-Maj operation.

Expand Down
4 changes: 1 addition & 3 deletions docs/en/mainFunctions.rst
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,8 @@ For sequences, the *grpdef_emaj_names_prefix* column must be *NULL*.

To optimize performances of E-Maj installations having a large number of tables, it may be useful to spread log tables and their index on several tablespaces. The **grpdef_log_dat_tsp** column specifies the name of the tablespace to use for the log table of an application table. Similarly, the **grpdef_log_idx_tsp** column specifies the name of the tablespace to use for the index of the log table.

If a column *grpdef_log_dat_tsp* or *grpdef_log_idx_tsp* is *NULL* (default value), the tablespace that is used at tables group creation is either *tspemaj* if it exists or the default tablespace of the current session.
If a column *grpdef_log_dat_tsp* or *grpdef_log_idx_tsp* is *NULL* (default value), the default tablespace of the current session at tables group creation is used.

If a column *grpdef_log_dat_tsp* or *grpdef_log_idx_tsp* is not *NULL*, its value is used to define the tablespace to use at tables group creation.

For sequences, both *grpdef_log_dat_tsp* and *grpdef_log_idx_tsp* columns must be *NULL*.

.. _emaj_create_group:
Expand Down
2 changes: 1 addition & 1 deletion docs/en/performance.rst
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ Use tablespaces

Creating tables into tablespaces located in dedicated disks or file systems is a way to more efficiently spread the access to these tables. To minimize the disturbance of application tables access by log tables access, the E-Maj administrator has two ways to use tablespaces for log tables and indexes location.

By creating a tablespace named *tspemaj* before the tables groups creation, log tables are created by default into this tablespace, without any additional action.
By setting a specific default tablespace for the session before the tables groups creation, log tables and indexes are created by default into this tablespace, without any additional action.

But through parameters set into the :ref:`emaj_group_def <emaj_group_def>` table, it is also possible to specify a tablespace to use for any log table or log index.

Expand Down
7 changes: 2 additions & 5 deletions docs/en/setup.rst
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,10 @@ To do it, just issue the following command::
Tablespace
^^^^^^^^^^

Optionally, a tablespace named **tspemaj** can be created. If it exists, and except if specific parameters are set at :ref:`tables groups definition <emaj_group_def>` level, tables and indexes created by E-Maj will be stored in it. Once created, this tablespace is shared among all databases of the PostgreSQL cluster.
Optionally, if the E-Maj administrator wants to store E-Maj technical tables into a **dedicated tablespace**, he can create it if needed and define it as the default tablespace for the session::

To create a *tspemaj* tablespace, the associated storage space (a directory for Unix/Linux, or a folder for Windows) must first be created, this storage space being left empty. Then the following SQL command must be executed ::
SET default_tablespace = <tablespace.name>;

CREATE TABLESPACE tspemaj LOCATION '<tablespace.directory/folder>';

For performance reasons, it is recommended, on a production environment, to put the *tspemaj* tablespace and the application tables on separate disk spaces.

E-Maj components installation
-----------------------------
Expand Down
3 changes: 0 additions & 3 deletions docs/en/uninstall.rst
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,11 @@ This script performs the following steps:
* it drops the extension and the main *emaj* schema,
* it drops roles *emaj_adm* and *emaj_viewer* if they are not linked to any objects in the current database or in other databases of the cluster.

However, the *tspemaj* tablespace, if it exists, or any other tablespaces containing log tables and indexes are NOT dropped by the script.

The uninstallation script execution displays::

$ psql ... -f sql/emaj_uninstall.sql
>>> Starting E-Maj uninstallation procedure...
SET
psql:sql/emaj_uninstall.sql:203: WARNING: emaj_uninstall: The tablespace tspemaj is not dropped by this script. If it is not used with other databases, you can drop it using a "DROP TABLESPACE tspemaj" statement.
psql:sql/emaj_uninstall.sql:203: WARNING: emaj_uninstall: emaj_adm and emaj_viewer roles have been dropped.
DO
SET
Expand Down
3 changes: 3 additions & 0 deletions docs/en/upgrade.rst
Original file line number Diff line number Diff line change
Expand Up @@ -131,4 +131,7 @@ The operation is very quick et does not alter tables groups. They may remain in
* updates on application tables can continue to be recorded during and after this version change,
* a *rollback* on a mark set before the version change can also be performed after the migration.

Version specific details:

* when upgrading from version 2.0.1, the :ref:`emaj_group_def <emaj_group_def>` table may be modified to reflect the fact that the *tspemaj* tablespace is not automaticaly considered as a default tablespace anymore. If *tspemaj* was effectively used as default tablespace for created tables groups, the related *grpdef_log_dat_tsp* and *grpdef_log_idx_tsp* columns content of the *emaj_group_def* table is adjusted so that a future drop and recreate operation would store the log tables and indexes in the same tablespace. The administrator may review these changes to be sure they correspond to his expectations.

8 changes: 2 additions & 6 deletions docs/fr/architecture.rst
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,7 @@ Par défaut, tous les objets liés aux groupes de tables sont créés dans le sc
Les tablespaces utilisés
************************

E-Maj propose trois façons d'utiliser des **tablespaces**.
Lors de l'installation de l'extension, les tables techniques E-Maj sont stockées dans le tablespace par défaut, positionné au niveau de l’instance ou de la database ou explicitement défini pour la session courante.

Lors de l'installation de l'extension et lors de la création des tables de log, E-Maj peut utiliser le tablespace par défaut.

Mais il est également possible de créer un tablespace dédié nommé *tspemaj*. S'il existe lors de l'installation ou de la création des tables de log, il sera utilisé comme support des tables créées.

Au travers du :ref:`paramétrage des groupes de tables <emaj_group_def>`, il est aussi possible de créer les tables de log et leur index dans des tablespaces spécifiques.
Il en est de même pour les tables de log et leur index. Mais au travers du :ref:`paramétrage des groupes de tables <emaj_group_def>`, il est aussi possible de créer les tables de log et leur index dans des tablespaces spécifiques.

2 changes: 1 addition & 1 deletion docs/fr/impactsAdmin.rst
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Sauvegarde et restauration
Sauvegarde et restauration au niveau fichier
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Lors des sauvegardes ou des restauration des clusters au niveau fichier, il est essentiel de sauver ou restaurer **TOUS** les fichiers du cluster. Ceci inclut bien sûr les fichiers correspondant au tablespace *tspemaj*, s'il existe.
Lors des sauvegardes ou des restauration des clusters au niveau fichier, il est essentiel de sauver ou restaurer **TOUS** les fichiers du cluster, y compris ceux stockés sur des tablespaces dédiés.

Après restauration des fichiers, les groupes de tables se retrouveront dans l'état dans lequel ils se trouvaient lors de la sauvegarde, et l'activité de la base de données peut reprendre sans opération E-Maj particulière.

Expand Down
6 changes: 2 additions & 4 deletions docs/fr/mainFunctions.rst
Original file line number Diff line number Diff line change
Expand Up @@ -86,11 +86,9 @@ Deux tables différentes ne peuvent pas, explicitement ou implicitement, partage

Pour les séquences, la colonne *grpdef_emaj_names_prefix* doit rester *NULL*.

Pour optimiser les performances des installations E-Maj comportant un très grand nombre de tables, il peut s'avérer intéressant de répartir les tables de log et leur index dans plusieurs tablespaces La colonne **grpdef_log_dat_tsp** sert à spécifier le nom du tablespace à utiliser pour la table de log d'une table applicative. De la même manière, la colonne **grpdef_log_idx_tsp** sert à spécifier le nom du tablespace à utiliser pour l'index de la table de log.
Pour optimiser les performances des installations E-Maj comportant un très grand nombre de tables, il peut s'avérer intéressant de répartir les tables de log et leur index dans plusieurs tablespaces. La colonne **grpdef_log_dat_tsp** sert à spécifier le nom du tablespace à utiliser pour la table de log d'une table applicative. De la même manière, la colonne **grpdef_log_idx_tsp** sert à spécifier le nom du tablespace à utiliser pour l'index de la table de log.

Si une colonne *grpdef_log_dat_tsp* ou *grpdef_log_idx_tsp* contient une valeur *NULL* (valeur par défaut), le tablespace utilisé lors de la création du groupe sera *tspemaj*, s'il existe, ou le tablespace par défaut de la session courante.

Si une colonne *grpdef_log_dat_tsp* ou *grpdef_log_idx_tsp* contient une valeur non nulle, le tablespace ainsi cité devra pré-exister au moment de la création du groupe.
Si une colonne *grpdef_log_dat_tsp* ou *grpdef_log_idx_tsp* contient une valeur *NULL* (valeur par défaut), le tablespace par défaut de la session courante au moment de la création du groupe est utilisé.

Pour les séquences, les colonnes *grpdef_log_dat_tsp* et *grpdef_log_idx_tsp* doivent rester NULL.

Expand Down
2 changes: 1 addition & 1 deletion docs/fr/performance.rst
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ Utiliser des tablespaces

Positionner des tables sur des tablespaces permet de mieux maîtriser leur implantation sur les disques et ainsi de mieux répartir la charge d'accès à ces tables, pour peu que ces tablespaces soient physiquement implantés sur des disques ou systèmes de fichiers dédiés. Pour minimiser les perturbations que les accès aux tables de log peuvent causer aux accès aux tables applicatives, l'administrateur E-Maj dispose de deux moyens d'utiliser des tablespaces pour stocker les tables et index de log.

En créant un tablespace nommé *tspemaj* avant la création des groupes de tables, les tables de log seront créées par défaut dans ce tablespace, sans autre paramétrage.
En positionnant un tablespace par défaut pour sa session courante avant la création des groupes de tables, les tables de log seront créées par défaut dans ce tablespace, sans autre paramétrage.

Mais, au travers de paramètres positionnés dans la table :ref:`emaj_group_def <emaj_group_def>`, il est également possible de spécifier, pour chaque table et index de log, un tablespace à utiliser.

Expand Down
7 changes: 2 additions & 5 deletions docs/fr/setup.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,10 @@ L’extension **dblink**, fournie avec PostgreSQL, est utilisée lors des opéra
Tablespace
^^^^^^^^^^

Optionnellement, on peut créer un tablespace nommé **tspemaj**. S'il existe, les tables et index créés par E-Maj seront implantés dans ce tablespace, sauf :ref:`paramétrage spécifique des groupes de tables <emaj_group_def>`. Une fois créé, ce tablespace est partagé par toutes les bases de données du cluster PostgreSQL.
Optionnellement, si l’administrateur E-Maj veut stocker les tables techniques dans un **tablespace dédié**, il peut le créer si besoin et le définir comme tablespace par défaut pour la session ::

Pour créer un tablespace *tspemaj*, il faut d'abord créer l'espace de stockage qui sera associé, un répertoire pour Unix/Linux ou un dossier pour Windows, en le laissant vide de tout fichier. Puis il faut exécuter la commande SQL suivante ::
SET default_tablespace = <nom.tablespace>;

CREATE TABLESPACE tspemaj LOCATION '<localisation.du.tablespace>';

Pour des questions de performance, il est recommandé dans un environnement de production d'implanter le tablespace *tspemaj* sur un espace disque distinct de celui qui supporte les tables applicatives.

Installation des composants E-Maj
---------------------------------
Expand Down
3 changes: 0 additions & 3 deletions docs/fr/uninstall.rst
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,11 @@ Ce script effectue les actions suivantes :
* il supprime l'extension et le schéma principal *emaj*,
* il supprime les rôles *emaj_adm* et *emaj_viewer* s'ils ne sont pas associés à d'autres rôles ou à d'autres bases de données du cluster et ne possèdent pas de droits sur d'autres tables.

En revanche, s'ils existent, le tablespace *tspemaj* et les éventuels autres tablespaces créés pour supporter les tables de log ne sont PAS supprimés par le script.

L'exécution du script de désinstallation affiche ceci ::

$ psql ... -f sql/emaj_uninstall.sql
>>> Starting E-Maj uninstallation procedure...
SET
psql:sql/emaj_uninstall.sql:203: WARNING: emaj_uninstall: The tablespace tspemaj is not dropped by this script. If it is not used with other databases, you can drop it using a "DROP TABLESPACE tspemaj" statement.
psql:sql/emaj_uninstall.sql:203: WARNING: emaj_uninstall: emaj_adm and emaj_viewer roles have been dropped.
DO
SET
Expand Down
4 changes: 4 additions & 0 deletions docs/fr/upgrade.rst
Original file line number Diff line number Diff line change
Expand Up @@ -134,3 +134,7 @@ L’opération est très rapide et ne touche pas aux groupes de tables. Ceux-ci
* que des mises à jour de tables peuvent être enregistrées avant puis après le changement de version
* et donc qu'après le changement de version, un *rollback* à une marque posée avant ce changement de version est possible.

Spécificités liées aux versions :

* quand on met à jour une version 2.0.1, la table :ref:`emaj_group_def <emaj_group_def>` peut être modifiée pour refléter le fait que le tablespace tspemaj n’est plus automatiquement considéré comme un tablespace par défaut. Si *tspemaj* est effectivement utilisé comme tablespace par défaut pour des groupes de tables créés, le contenu des colonnes *grpdef_log_dat_tsp* et *grpdef_log_idx_tsp* de la table *emaj_group_def* est ajusté afin qu’une future opération de suppression puis recréation d’un groupe de tables puisse stocker les tables et index de log dans les mêmes tablespaces. L’administrateur peut revoir ces changements pour être sûr qu’ils correspondent bien à ses souhaits.

0 comments on commit 9f0433f

Please sign in to comment.