The SSD I/O capacity is around 450MB. When I copy files from one folder to another I can see in the Windows Resource Monitor that the sum of read/write speed gets around 450MB. Why the same wont happen with dbeng9 or dbsrv9, while I am executing a read, transform and insert procedure?
These are the parameters:
C:\Program Files\Sybase\SQL Anywhere 9\x64\dbsrv9.exe
C:\Tributos\Dados\Asa9\Almirante\Integra.db -xtcpip -gl all -c 5000M -cl 5000M -ch 5000M -gp 8K -gb high -gt 4 -cs -n cnv_tributos
The process is not using more than 25% from each one of the 4 cores, so I don't know where is the bottleneck.
The Sybase manual informs that the per-seat license(the one i am using), is suposed to use all cores for processing requests. In adiction the "-gt 4" purpose was to force the use of 4 cores. It looks like a default behavior as if the server process was expecting more conections or more querys to be executed, but that wont happen, only i am using the database during this process.
I need to use the maximum capacity from the machine, because I work with a ETL (Extract Transform and Load) scenario all day. These procedures runs for hours, if i could make then run 4 times faster it would make my day.
Copying Files ->
Procedure Running ->
SSD -> Samsung SSD 840 EVO 500GB ATA Device
Sybase document reference.
Function (-gn) Set the maximum number of active requests (both user and system) that the database server can handle concurrently.
Syntax { dbsrv9 | dbeng9 } -gn integer ...
Applies to All operating systems and servers.
Description Set the number of active user and system requests that the database server can handle concurrently. If the maximum number of active requests are already in use when the database server receives an additional request, the new request must wait until another request is completed.
Each connection uses a thread for each request, and when the request is completed the thread is returned to the pool for use by other connections. As no connection can have more than one request in progress at one time, no connection uses more than one thread at a time. An exception to this rule is if a Java application uses threads. Each thread in the Java application is a database server execution thread.
The default is 20 threads for the network database server and for the personal database server, except on Windows CE where the default is 3 threads.
On Windows NT/2000/XP, you may want investigate the Performance Monitor readings for Requests: Active and Requests: Unscheduled. If the number of active requests is always less than -gn, you can lower -gn. If the number of total requests (active + unscheduled) is often larger than -gn, then you might want to increase -gn. The Performance Monitor is not available for UNIX or Linux platforms.
Function (-gt) Set the maximum number of requests that can be run simultaneously by the database server. This option is only useful on multiprocessor systems.
Syntax { dbsrv9 | dbeng9 } -gt integer ...
Applies to All operating systems and servers except NetWare.
Description With per-seat licensing, the network database server uses all CPUs available on the machine (the default). With CPU-based licensing, the network database server uses only the number of processors you are licensed for. In addition, the personal database server and runtime database server are both limited to a single processor.
I tried to set both parameters to 4 and to 1 , the results had no change.