How to add a property to a field type having data
I ended up using the following code.

function my_module_update_8001() {
  $field_type = 'my_field_type';
  $new_property = 'my_new_property';

  $manager = \Drupal::entityDefinitionUpdateManager();
  $field_map = \Drupal::entityManager()-&gt;getFieldMapByFieldType($field_type);
  foreach ($field_map as $entity_type_id =&gt; $fields) {
    foreach (array_keys($fields) as $field_name) {
      $field_storage_definition = $manager-&gt;getFieldStorageDefinition($field_name, $entity_type_id);
      $storage = \Drupal::entityTypeManager()-&gt;getStorage($entity_type_id);
      if ($storage instanceof \Drupal\Core\Entity\Sql\SqlContentEntityStorage) {
        $table_mapping = $storage-&gt;getTableMapping([
          // We pass only one storage definition to make
          // \Drupal\Core\Entity\Sql\DefaultTableMapping::getDedicatedTableNames()
          // return only tables we need.
          $field_name =&gt; $field_storage_definition,
        ]);
        $table_names = $table_mapping-&gt;getDedicatedTableNames();
        $columns = $table_mapping-&gt;getColumnNames($field_name);
        foreach ($table_names as $table_name) {
          $field_schema = $field_storage_definition-&gt;getSchema();
          \Drupal::database()
            -&gt;schema()
            -&gt;addField($table_name, $columns[$new_property], $field_schema['columns'][$new_property]);
        }
      }
      $manager-&gt;updateFieldStorageDefinition($field_storage_definition);
    }
  }
}