{"title":"Espaces de tables","version":"3.2","locale":"fr","docname":"topics/db/tablespaces","url":"/fr/3.2/topics/db/tablespaces/","canonical":"https://djangodocs.dev/fr/3.2/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…","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.2/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\">db_tablespace</code></a> dans la <code class=\"docutils literal notranslate\">class Meta</code> du modèle. Cette option affecte aussi les tables créées automatiquement pour les champs <a class=\"reference internal\" href=\"/fr/3.2/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a> du modèle.</p>\n<p>Vous pouvez utiliser le réglage <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-DEFAULT_TABLESPACE\"><code class=\"xref std std-setting docutils literal notranslate\">DEFAULT_TABLESPACE</code></a> pour indiquer une valeur par défaut pour <a class=\"reference internal\" href=\"/fr/3.2/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\">db_tablespace</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.2/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\">db_tablespace</code></a> à un constructeur d’un champ <code class=\"docutils literal notranslate\">Index</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.2/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\">db_tablespace</code></a> à un constructeur d’un champ <code class=\"docutils literal notranslate\">Field</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.2/ref/settings/#std-setting-DEFAULT_INDEX_TABLESPACE\"><code class=\"xref std std-setting docutils literal notranslate\">DEFAULT_INDEX_TABLESPACE</code></a> pour indiquer une valeur par défaut pour <a class=\"reference internal\" href=\"/fr/3.2/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\">db_tablespace</code></a>.</p>\n<p>Si <a class=\"reference internal\" href=\"/fr/3.2/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\">db_tablespace</code></a> n’est pas renseigné et que <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-DEFAULT_INDEX_TABLESPACE\"><code class=\"xref std std-setting docutils literal notranslate\">DEFAULT_INDEX_TABLESPACE</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=\"nc\">TablespaceExample</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">30</span><span class=\"p\">,</span> db_index<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span> db_tablespace<span class=\"o\">=</span><span class=\"s2\">&quot;indexes&quot;</span><span class=\"p\">)</span>\n    data <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">255</span><span class=\"p\">,</span> db_index<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n    shortcut <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">7</span><span class=\"p\">)</span>\n    edges <span class=\"o\">=</span> models<span class=\"o\">.</span>ManyToManyField<span class=\"p\">(</span>to<span class=\"o\">=</span><span class=\"s2\">&quot;self&quot;</span><span class=\"p\">,</span> db_tablespace<span class=\"o\">=</span><span class=\"s2\">&quot;indexes&quot;</span><span class=\"p\">)</span>\n\n    <span class=\"k\">class</span> <span class=\"nc\">Meta</span><span class=\"p\">:</span>\n        db_tablespace <span class=\"o\">=</span> <span class=\"s2\">&quot;tables&quot;</span>\n        indexes <span class=\"o\">=</span> <span class=\"p\">[</span>models<span class=\"o\">.</span>Index<span class=\"p\">(</span>fields<span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s1\">&#39;shortcut&#39;</span><span class=\"p\">],</span> db_tablespace<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\">TablespaceExample</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\">tables</code>. L’index du champ <code class=\"docutils literal notranslate\">name</code> et les index de la table plusieurs-à-plusieurs seront stockés dans l’espace de tables <code class=\"docutils literal notranslate\">indexes</code>. Le champ <code class=\"docutils literal notranslate\">data</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\">tables</code>. L’index du champ <code class=\"docutils literal notranslate\">shortcut</code> sera stocké dans l’espace de table <code class=\"docutils literal notranslate\">other_indexes</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.2/topics/"},{"docname":"topics/db/index","title":"Modèles et bases de données","url":"/fr/3.2/topics/db/"}],"prev":{"docname":"topics/db/multi-db","title":"Bases de données multiples","url":"/fr/3.2/topics/db/multi-db/"},"next":{"docname":"topics/db/optimization","title":"Optimisation de l’accès à la base de données","url":"/fr/3.2/topics/db/optimization/"},"formats":{"html":"/fr/3.2/topics/db/tablespaces/","markdown":"/fr/3.2/topics/db/tablespaces.md","json":"/fr/3.2/topics/db/tablespaces.json"},"source":"https://github.com/django/django/blob/stable/3.2.x/docs/topics/db/tablespaces.txt","official":"https://docs.djangoproject.com/fr/3.2/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","it","pt-br","ko","es","el","pl"]}