Copy on write with big files

We are using docker with big files(database) and we want to store this files as a part of an image.
The problem is when files change and we want to commit changes to the image. Usually only part of the file changes and we would like docker to save only the differences.

Copy on write seems to work on the block level as long as we don’t commit changes.
When we execute docker commit, the size of the commit is the sum of size of files being changed.

We are using
Storage Driver: devicemapper
Pool Name: docker-thinpool
Library Version: 1.02.107-RHEL7 (2016-06-09)

Is there a Storage Driver that is capable of saving changes on a block level, in other words does not save the whole file if only a small part changes ?