Above is a breakup of 4GB RAM memory on a typical desktop linux. Important to observe is breakup of Kernel space and Userland/User-space memory usage. Also how within these Cached ( a term that is difficult to explain in a simple post here) as well as non-cached memory breakups are arrived at to understand from Linux kernel VM/memory perspective of what can be typically reclaimed/recycled easily without swapping. This is how MemAvailable is calculated from >3.14 kernels.
Total PSS(Proportional Set size)+Shmem is what is typically Total Userland memory usage and Anon Pages+Shmem is typically not viewed as easily reclaimable but PageCache+Mapped is easily if needed to serve memory needs without swapping.
Important to note is at runtime some values may go negative but point of this post is to understand how kernel sees memory (note BIOS/HW reserved memory,few other items are not included here and one can see out of 4096MB only 3916MB is avl to start with)
Database servers reserve/use heavily Shared/initimate memory,use HugePages and pinned memory typically compared to typicall non-Db servers. This post is an illustration of essentially a breakup to arrive at ‘MemAvailable’ effective in non-DB servers serving as cache/servers