Wiki source code of Database Administration

Version 29.1 by Vincent Massol on 2013/04/04

Show last authors
1 {{box cssClass="floatinginfobox" title="**Contents**"}}
2 {{toc/}}
3 {{/box}}
4
5 XWiki uses by default a database to store its data. You will find on this page tips and tricks to administer and tune your database setup. For Installation please check the [[Installation guide>>InstallationWAR#HInstallandconfigureaRelationalDatabase]] which contains information on how to setup XWiki for multiple databases.
6
7 = Indexes =
8
9 To improve the performance of your XWiki instance when running with many documents you should run the following script to create indexes for your database (this has been tested for MySQL 5.0):
10
11 == Indexes for XWiki Enterprise versions after 4.3 ==
12
13 {{code}}
14 create index xwl_value on xwikilongs (xwl_value);
15 create index xwi_value on xwikiintegers (xwi_value);
16 create index xwl_value on xwikilargestrings (xwl_value(50));
17 create index xwd_parent on xwikidoc (xwd_parent(50));
18 create index xwd_class_xml on xwikidoc (xwd_class_xml(20));
19 create index xws_number on xwikistatsdoc (XWS_NUMBER);
20 create index xws_classname on xwikistatsdoc (XWS_CLASSNAME);
21 create index xwr_number on xwikistatsreferer (XWR_NUMBER);
22 create index xwr_classname on xwikistatsreferer (XWR_CLASSNAME);
23 create index xwr_referer on xwikistatsreferer (XWR_REFERER(50));
24 create index xwv_user_agent on xwikistatsvisit (XWV_USER_AGENT(255));
25 create index xwv_cookie on xwikistatsvisit (XWV_COOKIE(255));
26 create index xwv_classname on xwikistatsvisit (XWV_CLASSNAME);
27 create index xwv_number on xwikistatsvisit (XWV_NUMBER);
28 create index ase_page_date on activitystream_events (ase_page, ase_date);
29 create index xda_docid1 on xwikiattrecyclebin (xda_docid);
30 create index ase_param1 on activitystream_events (ase_param1(200));
31 create index ase_param2 on activitystream_events (ase_param2(200));
32 create index ase_param3 on activitystream_events (ase_param3(200));
33 create index ase_param4 on activitystream_events (ase_param4(200));
34 create index ase_param5 on activitystream_events (ase_param5(200));
35 {{/code}}
36
37 == Indexes for XWiki Enterprise versions after 3.2 ==
38
39 {{code}}
40 create index xwl_value on xwikilongs (xwl_value);
41 create index xwi_value on xwikiintegers (xwi_value);
42 create index xwl_value on xwikilargestrings (xwl_value(50));
43 create index xwd_parent on xwikidoc (xwd_parent(50));
44 create index xwd_class_xml on xwikidoc (xwd_class_xml(20));
45 create index xws_number on xwikistatsdoc (XWS_NUMBER);
46 create index xws_classname on xwikistatsdoc (XWS_CLASSNAME);
47 create index xwr_number on xwikistatsreferer (XWR_NUMBER);
48 create index xwr_classname on xwikistatsreferer (XWR_CLASSNAME);
49 create index xwr_referer on xwikistatsreferer (XWR_REFERER(50));
50 create index xwv_user_agent on xwikistatsvisit (XWV_USER_AGENT(255));
51 create index xwv_cookie on xwikistatsvisit (XWV_COOKIE(255));
52 create index xwv_classname on xwikistatsvisit (XWV_CLASSNAME);
53 create index xwv_number on xwikistatsvisit (XWV_NUMBER);
54 create index ase_requestid on activitystream_events (ase_requestid(200));
55 create index ase_page_date on activitystream_events (ase_page, ase_date);
56 create index xda_docid1 on xwikiattrecyclebin (xda_docid);
57 create index ase_param1 on activitystream_events (ase_param1(200));
58 create index ase_param2 on activitystream_events (ase_param2(200));
59 create index ase_param3 on activitystream_events (ase_param3(200));
60 create index ase_param4 on activitystream_events (ase_param4(200));
61 create index ase_param5 on activitystream_events (ase_param5(200));
62 {{/code}}
63
64 {{info}}
65 * Most indexes are created automatically starting with XWiki Enterprise 3.2 and only the indexes listed above need to be created.
66 * For older versions every index must be created manually. You can see the full list of indexes that should be created for older versions below. There is now [[an application>>extensions:Extension.Check Config And Indexes Application]] that runs this script automatically on XE and XEM directly from your wiki.
67 {{/info}}
68
69 == Indexes for XWiki Enterprise versions before 3.2 ==
70
71 {{code}}
72 create index DOC_SPACE on xwikidoc (XWD_WEB);
73 create index DOC_NAME on xwikidoc (XWD_NAME);
74 create index DOC_FULLNAME on xwikidoc (XWD_FULLNAME);
75 create index DOC_TITLE on xwikidoc (XWD_TITLE);
76 create index DOC_PARENT on xwikidoc (XWD_PARENT(50));
77 create index DOC_CREATION_DATE on xwikidoc (XWD_CREATION_DATE);
78 create index DOC_DATE on xwikidoc (XWD_DATE);
79 create index DOC_CONTENT_UPDATE_DATE on xwikidoc (XWD_CONTENT_UPDATE_DATE);
80 create index DOC_CREATOR on xwikidoc (XWD_CREATOR);
81 create index DOC_AUTHOR on xwikidoc (XWD_AUTHOR);
82 create index DOC_CONTENT_AUTHOR on xwikidoc (XWD_CONTENT_AUTHOR);
83 create index DOC_LANGUAGE on xwikidoc (XWD_LANGUAGE);
84 create index DOC_DEFAULT_LANGUAGE on xwikidoc (XWD_DEFAULT_LANGUAGE);
85 create index DOC_CLASS_XML on xwikidoc (XWD_CLASS_XML(20));
86 create index DOC_MINOREDIT on xwikidoc (XWD_MINOREDIT);
87 create index DOC_HIDDEN on xwikidoc (XWD_HIDDEN);
88 create index OBJ_NAME on xwikiobjects (XWO_NAME);
89 create index OBJ_CLASSNAME on xwikiobjects (XWO_CLASSNAME);
90 create index OBJ_NUMBER on xwikiobjects (XWO_NUMBER);
91
92 create index XWINT_NAME on xwikiintegers (XWI_NAME);
93 create index XWINT_VALUE on xwikiintegers (XWI_VALUE);
94 create index XWLONG_NAME on xwikilongs (XWL_NAME);
95 create index XWLONG_VALUE on xwikilongs (XWL_VALUE);
96 create index XWFLOAT_NAME on xwikifloats (XWF_NAME);
97 create index XWFLOAT_VALUE on xwikifloats (XWF_VALUE);
98 create index XWDOUBLE_NAME on xwikidoubles (XWD_NAME);
99 create index XWDOUBLE_VALUE on xwikidoubles (XWD_VALUE);
100 create index XWDATE_NAME on xwikidates (XWS_NAME);
101 create index XWDATE_VALUE on xwikidates (XWS_VALUE);
102 create index XWSTR_NAME on xwikistrings (XWS_NAME);
103 create index XWSTR_VALUE on xwikistrings (XWS_VALUE);
104 create index XWLS_NAME on xwikilargestrings (XWL_NAME);
105 create index XWLS_VALUE on xwikilargestrings (XWL_VALUE(50));
106
107 create index xwr_isdiff on xwikircs(xwr_isdiff);
108 create index xws_name on xwikistatsdoc (XWS_NAME);
109 create index xws_number on xwikistatsdoc (XWS_NUMBER);
110 create index xws_classname on xwikistatsdoc (XWS_CLASSNAME);
111 create index xws_action on xwikistatsdoc (XWS_ACTION);
112 create index xws_page_views on xwikistatsdoc (XWS_PAGE_VIEWS);
113 create index xws_unique_visitors on xwikistatsdoc (XWS_UNIQUE_VISITORS);
114 create index xws_period on xwikistatsdoc (XWS_PERIOD);
115 create index xws_visits on xwikistatsdoc (XWS_VISITS);
116 create index xwr_number on xwikistatsreferer (XWR_NUMBER);
117 create index xwr_name on xwikistatsreferer (XWR_NAME);
118 create index xwr_classname on xwikistatsreferer (XWR_CLASSNAME);
119 create index xwr_referer on xwikistatsreferer (XWR_REFERER(50));
120 create index xwr_page_views on xwikistatsreferer (XWR_PAGE_VIEWS);
121 create index xwr_period on xwikistatsreferer (XWR_PERIOD);
122 create index xwv_start_date on xwikistatsvisit (XWV_START_DATE);
123 create index xwv_name on xwikistatsvisit (XWV_NAME);
124 create index xwv_page_views on xwikistatsvisit (XWV_PAGE_VIEWS);
125 create index xwv_page_saves on xwikistatsvisit (XWV_PAGE_SAVES);
126 create index xwv_downloads on xwikistatsvisit (XWV_DOWNLOADS);
127 create index xwv_end_date on xwikistatsvisit (XWV_END_DATE);
128 create index xwv_ip on xwikistatsvisit (XWV_IP);
129 create index xwv_user_agent on xwikistatsvisit (XWV_USER_AGENT(255));
130 create index xwv_cookie on xwikistatsvisit (XWV_COOKIE(255));
131 create index xwv_unique_id on xwikistatsvisit (XWV_UNIQUE_ID);
132 create index xwv_classname on xwikistatsvisit (XWV_CLASSNAME);
133 create index xwv_number on xwikistatsvisit (XWV_NUMBER);
134
135 create index xdd_fullname1 on xwikirecyclebin (xdd_fullname);
136 create index xdd_language on xwikirecyclebin (xdd_language);
137 create index xdd_date on xwikirecyclebin (xdd_date);
138 create index xdd_deleter on xwikirecyclebin (xdd_deleter);
139 create index xda_docid1 on xwikiattrecyclebin (xda_docid);
140 create index xda_doc_name on xwikiattrecyclebin (xda_doc_name);
141 create index xda_filename on xwikiattrecyclebin (xda_filename);
142 create index xda_date on xwikiattrecyclebin (xda_date);
143 create index xda_deleter on xwikiattrecyclebin (xda_deleter);
144
145 create index ase_requestid on activitystream_events (ase_requestid(200));
146 create index ase_stream on activitystream_events (ase_stream);
147 create index ase_date on activitystream_events (ase_date);
148 create index ase_type on activitystream_events (ase_type);
149 create index ase_application on activitystream_events (ase_application);
150 create index ase_user on activitystream_events (ase_user);
151 create index ase_wiki on activitystream_events (ase_wiki);
152 create index ase_space on activitystream_events (ase_space);
153 create index ase_page on activitystream_events (ase_page);
154 create index ase_page_date on activitystream_events (ase_page, ase_date);
155 {{/code}}
156
157 = Sanity Checks =
158
159 To verify the consistency of your XWiki database you can run the sanity check script. The script will select rows that are inconsistent with the logics of XWiki. If no rows are selected, it means the script itself can not detect any error.
160
161 * If you use **MySQL** as your database:
162 ** The following [[sanity check script>>attach:sanitycheck.sql]] has been tested for **MySQL 5.0** (also been reported to work with MS-SQL)
163 ** Another [[script>>attach:sanitycheckMySQL4.sql]] is a variant of the previous script for **MySQL 4.x** replacing some syntax with more ancient one (still reports errors in one command)
164 * If you use **postgresql** as your database:
165 ** Here is a [[modified version of the sanity check script>>attach:sanitycheck_postgresql.sql]], to be run in the "query" tool of pgAdmin. It is the same as the script for MySQL, except that the syntax for SQL comments is different.
166 ** pgAdmin is the GUI tool provided with postgresql to access the database. Run pgAdmin, select the ##xwiki## database, and choose the "Query" option in the "Tools" menu. Then just open the script and click on the play icon ("Execute query").
167
168 = Database browsing =
169
170 == DbVisualizer ==
171
172 [[DbVisualizer>>http://www.dbvis.com/download/]] natively supports these DBs:
173
174 * DB2 for Windows/Linux
175 * JavaDB/Derby
176 * MySQL
177 * PostgreSQL
178 * [[and more>>http://www.dbvis.com/features/tour/supported-databases/]]
179
180 Any DB using the corresponding JDBC driver:
181
182 * Example: HSQLDB by using the driver bundled with XWiki

Get Connected