What are the benefits of vertical partitioning VS horizontal partitioning?

The main reason to have vertical partition is when there are columns in the table that are updated more often than the rest. You separate them in another table / partition, and when you are performing updates, you do not update the rest of the table. Example can be the posts counter. If it is in the same table as the other user data, each update of the counter (and there are lots) will lock the entire record, but you need to read it often. In vertical partitioning, the updated table will be user_counters, and the performance of users won't be affected of the number of updates.