I'm noticed on a clean Drupal installation, the cache context url.query_args is present on ALL requests, that cause one entry on cache_render table per each request (if we change some query params, think about analitycs queries), and that table grows extremely fast. I don't know if this is necessary for ALL pages. Can I disable this behaviour from a config? Is this neccesary for Drupal to work properly?
No, in a clean Drupal installation this should not happen. These are the default cache contexts set in core.services.yml:
parameters: renderer.config: required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions']
What you might have found are cache entries from the Internal Page Cache for anonymous requests, which doesn't use cache contexts. Instead it stores the cache entries with the complete URL including the query string as cid. There are a lot of complaints that the Internal Page Cache fills up the database even for sites with moderate traffic. Not only because of the variations by the query string, also because the entries have no expire date and there is no way to configure one in UI. But you can easily replace the Internal Page Cache with Varnish or a CDN. You only have to configure the third party solution to invalidate the Drupal cache tags. Another option is to replace the cache backend with a solution that provides an automatic expiration like Memcache or Redis.