{"title":"Espaces de tables","version":"3.1","locale":"fr","docname":"topics/db/tablespaces","url":"/fr/3.1/topics/db/tablespaces/","canonical":"https://djangodocs.dev/fr/3.1/topics/db/tablespaces/","summary":"Un paradigme courant dans l’optimisation des performances des systèmes de base de données est l’utilisation des espaces de tables pour organiser l’agencement sur…","html":"<h1>Espaces de tables<a class=\"heading-anchor\" href=\"#tablespaces\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Un paradigme courant dans l’optimisation des performances des systèmes de base de données est l’utilisation des <a class=\"reference internal\" href=\"#tablespaces\">espaces de tables</a> pour organiser l’agencement sur disque.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Avertissement</p>\n<p>Django ne crée pas d’espace de tables pour vous. Consultez la documentation de votre moteur de base de données pour plus de détails sur la création et la gestion d’espaces de tables.</p>\n</aside>\n<section id=\"declaring-tablespaces-for-tables\">\n<h2>Déclaration d’espaces de tables pour les tables<a class=\"heading-anchor\" href=\"#declaring-tablespaces-for-tables\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Un espace de tables peut être indiqué pour une table générée par un modèle en renseignant l’option <a class=\"reference internal\" href=\"/fr/3.1/ref/models/options/#django.db.models.Options.db_tablespace\" title=\"django.db.models.Options.db_tablespace\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">db_tablespace</span></code></a> dans la <code class=\"docutils literal notranslate\"><span class=\"pre\">class</span> <span class=\"pre\">Meta</span></code> du modèle. Cette option affecte aussi les tables créées automatiquement pour les champs <a class=\"reference internal\" href=\"/fr/3.1/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code></a> du modèle.</p>\n<p>Vous pouvez utiliser le réglage <a class=\"reference internal\" href=\"/fr/3.1/ref/settings/#std-setting-DEFAULT_TABLESPACE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEFAULT_TABLESPACE</span></code></a> pour indiquer une valeur par défaut pour <a class=\"reference internal\" href=\"/fr/3.1/ref/models/options/#django.db.models.Options.db_tablespace\" title=\"django.db.models.Options.db_tablespace\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">db_tablespace</span></code></a>. C’est utile pour définir un espace de tables pour les applications Django de base et pour d’autres applications dont vous ne maîtrisez pas le code.</p>\n</section>\n<section id=\"declaring-tablespaces-for-indexes\">\n<h2>Déclaration des espaces de tables pour les index<a class=\"heading-anchor\" href=\"#declaring-tablespaces-for-indexes\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Vous pouvez transmettre l’option <a class=\"reference internal\" href=\"/fr/3.1/ref/models/indexes/#django.db.models.Index.db_tablespace\" title=\"django.db.models.Index.db_tablespace\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">db_tablespace</span></code></a> à un constructeur d’un champ <code class=\"docutils literal notranslate\"><span class=\"pre\">Index</span></code> pour indiquer le nom d’un espace de table à utiliser pour l’index. Pour les index de champ unique, vous pouvez transmettre l’option <a class=\"reference internal\" href=\"/fr/3.1/ref/models/fields/#django.db.models.Field.db_tablespace\" title=\"django.db.models.Field.db_tablespace\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">db_tablespace</span></code></a> à un constructeur d’un champ <code class=\"docutils literal notranslate\"><span class=\"pre\">Field</span></code> pour indiquer un espace de tables différent pour l’index de la colonne du champ. Si aucun index n’est créé pour la colonne en question, l’option est ignorée.</p>\n<p>Vous pouvez utiliser le réglage <a class=\"reference internal\" href=\"/fr/3.1/ref/settings/#std-setting-DEFAULT_INDEX_TABLESPACE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEFAULT_INDEX_TABLESPACE</span></code></a> pour indiquer une valeur par défaut pour <a class=\"reference internal\" href=\"/fr/3.1/ref/models/fields/#django.db.models.Field.db_tablespace\" title=\"django.db.models.Field.db_tablespace\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">db_tablespace</span></code></a>.</p>\n<p>Si <a class=\"reference internal\" href=\"/fr/3.1/ref/models/fields/#django.db.models.Field.db_tablespace\" title=\"django.db.models.Field.db_tablespace\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">db_tablespace</span></code></a> n’est pas renseigné et que <a class=\"reference internal\" href=\"/fr/3.1/ref/settings/#std-setting-DEFAULT_INDEX_TABLESPACE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEFAULT_INDEX_TABLESPACE</span></code></a> n’a pas été défini, l’index est créé dans le même espace de table que les tables.</p>\n</section>\n<section id=\"an-example\">\n<h2>Un exemple<a class=\"heading-anchor\" href=\"#an-example\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">TablespaceExample</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">30</span><span class=\"p\">,</span> <span class=\"n\">db_index</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span> <span class=\"n\">db_tablespace</span><span class=\"o\">=</span><span class=\"s2\">&quot;indexes&quot;</span><span class=\"p\">)</span>\n    <span class=\"n\">data</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">255</span><span class=\"p\">,</span> <span class=\"n\">db_index</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n    <span class=\"n\">shortcut</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">7</span><span class=\"p\">)</span>\n    <span class=\"n\">edges</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">ManyToManyField</span><span class=\"p\">(</span><span class=\"n\">to</span><span class=\"o\">=</span><span class=\"s2\">&quot;self&quot;</span><span class=\"p\">,</span> <span class=\"n\">db_tablespace</span><span class=\"o\">=</span><span class=\"s2\">&quot;indexes&quot;</span><span class=\"p\">)</span>\n\n    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Meta</span><span class=\"p\">:</span>\n        <span class=\"n\">db_tablespace</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;tables&quot;</span>\n        <span class=\"n\">indexes</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Index</span><span class=\"p\">(</span><span class=\"n\">fields</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s1\">&#39;shortcut&#39;</span><span class=\"p\">],</span> <span class=\"n\">db_tablespace</span><span class=\"o\">=</span><span class=\"s1\">&#39;other_indexes&#39;</span><span class=\"p\">)]</span>\n</code></pre></div>\n<p>Dans cet exemple, les tables générées par le modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">TablespaceExample</span></code> (c’est-à-dire la table du modèle et la table plusieurs-à-plusieurs) seront stockées dans l’espace de tables <code class=\"docutils literal notranslate\"><span class=\"pre\">tables</span></code>. L’index du champ <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> et les index de la table plusieurs-à-plusieurs seront stockés dans l’espace de tables <code class=\"docutils literal notranslate\"><span class=\"pre\">indexes</span></code>. Le champ <code class=\"docutils literal notranslate\"><span class=\"pre\">data</span></code> génère aussi un index, mais aucun espace de tables n’est indiqué, il sera donc stocké par défaut dans l’espace de tables <code class=\"docutils literal notranslate\"><span class=\"pre\">tables</span></code>. L’index du champ <code class=\"docutils literal notranslate\"><span class=\"pre\">shortcut</span></code> sera stocké dans l’espace de table <code class=\"docutils literal notranslate\"><span class=\"pre\">other_indexes</span></code>.</p>\n</section>\n<section id=\"database-support\">\n<h2>Prise en charge des bases de données<a class=\"heading-anchor\" href=\"#database-support\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>PostgreSQL et Oracle prennent en charge les espaces de tables, au contraire de SQLite, MariaDB et MySQL.</p>\n<p>Lorsque vous utilisez un moteur qui ne prend pas en charge les espaces de tables, Django ignore toutes les options liées aux espaces de tables.</p>\n</section>","rootId":"tablespaces","toc":[{"title":"Déclaration d’espaces de tables pour les tables","anchor":"declaring-tablespaces-for-tables","children":[]},{"title":"Déclaration des espaces de tables pour les index","anchor":"declaring-tablespaces-for-indexes","children":[]},{"title":"Un exemple","anchor":"an-example","children":[]},{"title":"Prise en charge des bases de données","anchor":"database-support","children":[]}],"breadcrumbs":[{"docname":"topics/index","title":"Utilisation de Django","url":"/fr/3.1/topics/"},{"docname":"topics/db/index","title":"Modèles et bases de données","url":"/fr/3.1/topics/db/"}],"prev":{"docname":"topics/db/multi-db","title":"Bases de données multiples","url":"/fr/3.1/topics/db/multi-db/"},"next":{"docname":"topics/db/optimization","title":"Optimisation de l’accès à la base de données","url":"/fr/3.1/topics/db/optimization/"},"formats":{"html":"/fr/3.1/topics/db/tablespaces/","markdown":"/fr/3.1/topics/db/tablespaces.md","json":"/fr/3.1/topics/db/tablespaces.json"},"source":"https://github.com/django/django/blob/stable/3.1.x/docs/topics/db/tablespaces.txt","official":"https://docs.djangoproject.com/fr/3.1/topics/db/tablespaces/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}