19.02.2017 5:21, Leyne, Sean wrote:
>
>
>>> If I read the documentation correctly, a statement which performed
>>> (say) a SELECT against a table that
>> > follows a NATURAL scan, which is 'paused' awaiting the next Fetch, would
>> run into the timeout, even > though there is no "cost" to the engine of
>> waiting.
>>>
>>> Am I correct?
>>
>> Yes.
>
> That doesn't seem quite right.
>
> I always think of Timeout as been a measure of the amount of time the engine
> is busy/working.
Here i not agree with you. Typical use cases is enlisted in docs. More, what
you describe above
will not work at all in concurrent environment as it is close to impossible to
measure exact time
when engine working on *given* statement. Also, such measurements could have
its own cost and add
overhead.
> Otherwise, why would "milli-second" based Timeout value have any use.
Users asks for milliseconds and it is technically possible.
> While waiting for a "fetch" the engine is doing "nothing", so IMO, it should
> not factor into the timeout.
Just one sample: you offer to exclude time between API calls but what about
time spend on thread
context switch, IO wait, lock\latch wait and so on ? Engine doesn't work in
such moments, isn't it ?
Please, think on statement execution timeouts from client app POV.
> {I have done some searches on how other engines handle this issue but haven't
> not found any good details/examples}
Believe me, i also searched for this info and nobody did it in a way as you
think above.
>>> Separately, it would be "a good thing" if the Timeouts could be set in
>>> Trigger or SP -- perhaps via
>> > special "SQL_Timeout" RDB$Context for the "User_Session" and
>> "User_Transaction" namespaces.
>>
>> For what goal ?
>
> To allow for the timeout to be customized.
There is already a ways to customize timeouts.
> Arguably, setting the "SQL_Timeout" value in the > "User_Transaction"
> namespace would allow the
> timeout value for the *current transaction* to be overridden in code,
> without the need for API
> settings.
There is no such thing as "timeout for transaction". Stmt execution timeouts
could be set at
database (config), connection and\or given statement level.
> Similarly, for the "User_Session",
Seems you missed SET STATEMENT TIMEOUT statement
> which would, of-course, apply to the next transactions of thecurrent
> session/connection.
Probably you mixed "statement execution timeout" with "lock timeout". "lock
timeout" could be
set at transaction level, yes, but it have no direct relation with "statement
execution timeout".
Regards,
Vlad
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel