Which software need to set its user data directory in CoW disabled subvolume?

Is it better to have the large and fast changing files moved to a CoW disabled subvolume for better performance? For example,Kfinder database will changed quickly and large, so it should not be placed in CoW enabled subvolume, what other normal data like this kind?

Most likely this is not necessary when using an SSD.

You could poll the results of iotop running in a script to check which programs are I/O heavy during a 24 hour period. Also sysstat is nice for an overview of past I/O activity and identifying the hotspots.

I’ve always used the mount option noatime with btrfs. Haven’t benchmarked how much of a difference it makes but disabling btrfs quota had a huge performance improvement.

How exactly to do check?

BTRFS is useful for TW. For Leap you can use ext4 or XFS instead of BTRFS for root or /home or another stuff.

I’m not using SSD

Does frequently change file cause high I/O in BTrFS? Is this the reason openSUSE creates several subvolumes without CoW for root system?

No default subvolumes are created without CoW on OpenSuse Tumbleweed or Slowroll.
As you’re not using an SSD some optimizations like disabling CoW, enabling compression, etc. could improve the performance but it would still be quite slow as a boot drive.

What is the reason openSUSE creates subvolumes like /opt, /var … during installation?

Documentation says: