[Progress Communities] [Progress OpenEdge ABL] Forum Post: Loading schema into a new, empty database is slow (prodict/load_df.p)

Status
Not open for further replies.
D

dbeavon

Guest
We have some build automation tools that create an empty OE database, prior to compiling ABL code. It starts with a df file (or files) that contains all the desired target database schema. One problem I've noticed in the automatic build operations is that the creation of an empty database is a bit slow. Are there any tricks to improving performance (possibly loading certain segments of the the schema concurrently on separate threads)? When the schema is loading, it seems that the operation is CPU-bound, on a single CPU core. I had first expected to find that disk would be the bottleneck, but that doesn't appear to be the case. I'm also taking a peak at PCT in github and it looks like it relies on prodict/dump_df.p and prodict/load_df.p as well. It appears to have wrappers, dmpSch.p and loadSch.p. I haven't tried running PCT yet myself, but I don't see any optimizations in there that would improve the performance of creating a full/empty database schema. The task that I was investigating is called PCTCreateBase ... Riverside-Software/pct The only optimization I can think of is to attempt to manage *incremental* schema DF's, and use that for automated builds, but that seems like it adds extra complexity. I'd rather just send the full database DF as the input for our automated builds. Another idea I had is to create some additional service that periodically checks for OE schema changes and extracts/creates the corresponding empty database with the same schema whenever a change is detected. That way a database is already prepared and ready to go whenever a new build is started. This seems a bit overly complex as well. Yet another idea is to create multiple empty databases and split the schema arbitrarily across them. Then we could compile code that connects to these multiple databases. I think the resulting r-code would be the same as if it was all in a single database. I haven't tried this myself. The reason we create an empty database is because we need the OE database to be local while compiling or else the runtime environment does a lot more work to pull schema over the network on the fly. Any ideas would be appreciated.

Continue reading...
 
Status
Not open for further replies.
Top