Parallel "CONTAINS" query and the "FORCED SERIAL" exec plan
548079Jul 22 2008 — edited Jul 24 2008Greetings everyone,
I have a document table [documents] as follows:
CREATE TABLE documents (
doc_cluster NUMBER(2) DEFAULT 0 not null,
doc_id INTEGER not null,
doc_content CLOB not null
) PARALLEL
PARTITION BY RANGE(doc_cluster)
( ... a list of 11 partition definitions ... )
and the table contains about 1 million rows
I have created a local CONTEXT index:
CREATE INDEX ix_doc_rc16_1 ON documents (doc_content)
INDEXTYPE IS ctxsys.context PARAMETERS('WORDLIST wordlist_pref') LOCAL
I am trying to execute in parallel this simple query:
SELECT doc_cluster, doc_id FROM documents
WHERE CONTAINS(doc_content, 'per%') > 0
The resulting query plan looks like:
SELECT STATEMENT, GOAL = ALL_ROWS Cardinality=578 CPU cost=1 IO cost=4 Cost=4
PX COORDINATOR FORCED SERIAL
PX SEND QC (RANDOM) Object name=:TQ10000 Cardinality=578 CPU cost=1 IO cost=4 Cost=4
PX PARTITION RANGE ALL Cardinality=578 CPU cost=1 IO cost=4 Cost=4 Partition start=1 Partition stop=11
TABLE ACCESS BY LOCAL INDEX ROWID Object name=DOCUMENTS Cardinality=578 CPU cost=1 IO cost=4 Cost=4 Partition start=1 Partition stop=11
DOMAIN INDEX Object name=IX_DOC_RC16_1 CPU cost=1 IO cost=4 Cost=4
When I execute the statement it is seen in the "Top Activity" console of the "Enterprise Manager" that only one active session is present. There were no slave sessions which appear usually when parallel execution is on the way.
Then I searched for explanation of the "PX COORDINATOR FORCED SERIAL" but couldn't find any.
Can anyone help with ideas - what is happening and how can I acheive a real parallel execution of my statement.
Thanks in advance!