2009-11-04 8 views
5

Innodb de Mysql a des concepts de page, étendue, segment, tablespace mais je ne sais pas comment ils interagissent les uns avec les autres. Comment sont-ils liés? Qu'est-ce que cela signifie qu'un tablespace a 16K de pages? Comment cela se rapporte-t-il aux lignes physiques et est-ce que les «pages» ont quelque chose dans la mémoire? Je suppose qu'Oracle pourrait avoir le même concept mais je ne sais pas où le chercher. Y at-il une bonne référence/livre qui parle de cela en détail?Page par rapport à l'étendue par rapport au segment par rapport à l'espace table

Répondre

0

Oracle a des blocs, des segments et des extensions pour décrire la disposition physique, et des tables et des tablespaces pour r décrivant la disposition logique. Malheureusement, je ne me souviens pas des détails, et en tout cas je les ai appris il y a deux versions.

En général, il y aura deux façons différentes de décrire les bases de données. Du point de vue des utilisateurs, une base de données peut être divisée en tablespaces et les tablespaces contiennent des tables contenant des lignes, etc. Cependant, ceux-ci doivent vivre quelque part sur le disque, et donc le DBA devra généralement allouer des fichiers, et à l'intérieur des fichiers il doit y avoir une disposition qui permettra aux lignes et aux champs d'être stockés dans les octets du fichier.

Ce sont des détails de mise en œuvre, et ne présentent normalement qu'un intérêt pour le DBA. Vous les trouverez dans la documentation des systèmes de bases de données individuels et des livres destinés aux administrateurs de base de données, et vous trouverez généralement chaque système de base de données dans ses propres livres. Rappelez-vous que les systèmes de bases de données sont généralement accompagnés de documentation et que des systèmes comme Oracle et DB2 disposent généralement d'une documentation très complète, souvent organisée en livres que vous pouvez lire en ligne ou télécharger sous une forme ou une autre. Bien sûr, essayer de trouver quelque chose sur www.oracle.com ou www.ibm.com peut être une expérience frustrante, mais Google est probablement toujours votre ami.

+0

Pouvez-vous recommander un bon livre Oracle expliquant ces choses? – bichonfrise74

+0

Celui-ci est plutôt bon: http://www.amazon.com/Oracle-Database-10g-DBA-Handbook/dp/0072231459/ref=sr_1_1?ie=UTF8&s=books&qid=1257384634&sr=8-1 –

0

Il existe une distinction entre la structure de base de données physique Oracle et la structure de base de données logique. Les fichiers de données Oracle et les fichiers de contrôle font partie de la structure physique, alors que les blocs et les extensions sont des parties de la logique.

La recherche Google sur "Oracle architecture" donne beaucoup de résultats. This et this one peut être utile, ou vous pouvez choisir d'acheter un bon livre tel que this one. Mais l'une des meilleures sources d'informations sur la base de données Oracle est Oracle documentation itself.

La documentation pour votre version de base de données de choix est disponible gratuitement en ligne et pour le téléchargement local à partir du Oracle web site.

7

InnoDB spécifiquement:

Un tablespace est à la fois physique et un concept logique. Auparavant, toutes les tables innodb avaient leurs données mélangées dans les fichiers ibdata. Dans ces fichiers, un tablespace est une collection non nécessairement contiguë de segments qui composent la table. Dans les nouvelles versions de mysql, une seule table peut être placée dans son propre fichier, également appelé tablespace.

Dans les deux cas, un espace de table contient:

  • segments, qui contiennent 1 ou plusieurs extensions de cette table.

  • Les extensions contiennent 64 pages. Je ne sais pas pourquoi 64.

  • pages sont 16k, ce qui est théoriquement optimisé pour le stockage efficace et la récupération au niveau du disque. les pages sont allouées en quantités d'extension lorsque plus de pages sont nécessaires.

Voir page 11 de this pdf.

+0

64 pages parce que 64x16KB = 1MB. Donc, une extension est définie comme 1 Mo, ce qui est fondamentalement un choix arbitraire pour un "morceau" de stockage. Si vous changez la taille de la page (maintenant une option sur MySQL 5.6), l'extension est toujours de 1 Mo, mais peut contenir plus de pages (car chaque page est plus petite). –

0

La structure de stockage d'Oracle est bien décrite dans la documentation: http://download.oracle.com/docs/cd/E11882_01/server.112/e10713/logical.htm#CNCPT304

Un tablespace est un conteneur de stockage logique constitué d'un ou plusieurs fichiers de données. un espace de table est défini avec une taille de bloc particulière et, en général, tous les espaces de table dans une base de données Oracle auront une taille de bloc commune. 8kb est le plus couramment choisi.

Le stockage d'index, de tables, de clusters, etc. est représenté par des segments. Un seul segment sera affecté à un seul espace de table mais peut être réparti sur plusieurs fichiers de données. Une table ou un index non partitionné aura un seul segment. Pour une table ou un index partitionné, chaque partition ou sous-partition sera un seul segment.

Les segments sont constitués d'étendues, qui sont des ensembles logiquement contigus de blocs. Les nouvelles extensions sont allouées aux segments manuellement ou automatiquement selon les besoins des modèles de croissance.

Questions connexes