What is the basic concept behind revisons in term of performance? On a Drupal 8 project, I am planning to allow revisions to be created for one "content type" which consist of around 40 different fields !

Can someone explain the concept behind on how Drupal save the revisions ?

My main concern is that the "Content type" in question will have in one year around "one million +" nodes with at least "3 revisions" for each node.

Could this affect the performance of the website ?

Revisions are treated as separated nodes as well ?

Update:

Any node of this content type will live on the website for a period of 1 year and then will be deleted for good !
Drupal essentially stores a copy of the node each time a revision is created. So if you're making alot of text edits it will be your database size that will mainly increase because of enabling revisions. (But drupal will also keep any files uploaded that are associated with previous revisions)

So normally for nodes you have about 3 core tables with a row for each node. Then you have a table for each field you add to content types e.g. "node__field_my_field" which holds the live content for that field.

So with a million nodes you'd expect 1 million rows in the core node tables and up to 1 million rows in each of your field tables for each node (If you populate every field for every node)

If you enable revisions a few new tables get created to start tracking each revision, I think its 2 extra core tables and then a revision table for each field. But this time every time you make a revision it add a row to all these tables. So with your 1 million nodes with 3 revisions you will effectively quadruple your database storage requirement

But in terms of site performance it shouldn't really have too much effect as databases can scale well