Did this article resolve your question/issue?



Multi-threaded binary dump uses less threads for the dump than the -threadnum specified.

« Go Back


TitleMulti-threaded binary dump uses less threads for the dump than the -threadnum specified.
URL NameP141020
Article Number000143757
EnvironmentProduct: OpenEdge
Version: 10.1x, 10.2x, 11.x
OS: All supported platforms
Question/Problem Description
Multi-threaded binary dump utility, uses less threads for the dump than the -threadnum specified.
Some tables use all the threads specified by -threadnum for the binary dump process.
Some large tables only use one thread when threadnum is specified for a threaded binary dump.
Some tables only use less threads than the threadnum specified for a threaded binary dump.
The dumplist file is not produced when one thread produces only one .bd dump file.
Steps to Reproduce
Clarifying Information
Tables with few records use less threads.
Tables with no records use less threads
Tables with duplicate keys on the index used for the binary dump use less threads.

Server has enough operational CPU's to match the -threadnum value used.
Single thread mode has not been specified (-thread 0)
Binary dump completes without error.
Error Message
Defect/Enhancement Number
The Multi-threaded feature on binary dump is introduced in OpenEdge 10.1A. 

A binary dump uses threaded options by default: The default -threadnum value is the number of system CPUs and -thread 1 is turned on.
When a binary dump is run without threading (-thread 0) or when a threaded binary dump determines to use single thread mode for the binary dump, the dumplist file is not produced when only one .bd dump file results in version pre OpenEdge 11.5.

Even when a threaded dump is specified, multi threads will not necessarily be started to dump the table.  The algorithm also checks on the following before permitting a multi-threaded binary dump:

a.)  Enterprise Database License

b.)  More than one CPU, which defaults the -threadnum to the number of operational CPU's unless otherwise specified.

c.)  Threaded binary dumps are created based on the index tree, not on the table size. The number of entries in the root block of the index used (Primary index by default or that specified by the -index parameter).  The threaded-dump algorithm splits the root block logically into up to (-threadnum) parts, this will break the index tree in different ranges according to the keys in the root block, each thread works on a range. If there is only one entry in the root block, it cannot be split so a non-threaded (regular) dump will be used.

d.) A special case that affects the number of threads used: if there are duplicate keys in the root block, the duplicate keys are ignored when building the brackets for the number of threads to be used.
This is expected behaviour, the threaded binary dump is working as designed.

A different index may be used to perform the dump if the root of the index contains more entries, but it cannot be predicted how many threads the dump will use. Refer to Article 000061242, How to estimate the number of binary dump threads?   
Last Modified Date6/8/2017 10:52 AM
Disclaimer The origins of the information on this site may be internal or external to Progress Software Corporation (“Progress”). Progress Software Corporation makes all reasonable efforts to verify this information. However, the information provided is for your information only. Progress Software Corporation makes no explicit or implied claims to the validity of this information.

Any sample code provided on this site is not supported under any Progress support program or service. The sample code is provided on an "AS IS" basis. Progress makes no warranties, express or implied, and disclaims all implied warranties including, without limitation, the implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample code is borne by the user. In no event shall Progress, its employees, or anyone else involved in the creation, production, or delivery of the code be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample code, even if Progress has been advised of the possibility of such damages.