DBReader ======== - GetGroupInfo - apply intervals SHOW TABLES SELECT MIN(*), MAX(*) ... - GetItemList - headers SHOW COLUMNS - GetRawData - load data SHOW COLUMNS - construct SELECT query SELECT - request data Optimization ============ - General * Better use direct addressing instead of virtual * Group requests to the same group (requests all required channels at once) * Cache fetched data locally - Avoiding interval calculation experiment=*-* - We don't need to find where the data ends and will not call GetGroupInfo if 'window=#' window=3600,-1 - The last would not work unless window has a defined size. Therefore, we not only request last item, but also specify window to look. - Avoiding names retrieval rt=skip_headers - Will not call GetItemList rt=full - Also adapts window & experiment as explained above - Loading data from the cache cache=1 - SHOW COLUMNS will not be called for DBReader & data is loaded from MySQL cache - Completely excluding source DB rt=full&cache=1