A few weeks ago I found myself talking with a network engineer. We were discussing why my data being transferred over a network was slow. It was a small database and I didn’t understand why if we have a 1 gigabit connection, my 1 gigabyte database was slow moving over it. I am still working this concept in my head and would love feedback of how to help me understand it better.
A bit is one binary digit of 0 or 1. One kilo-bit (kb) is 1000 bits, One Megabit(Mb) is 1,000,000 bits and One Gigabit (Gb) is 1,000,000,000 bits. Bits are always represented as b whereas Bytes are represented as B. Bits focus on the data being moved over the wire between two telecommunication devices and are moved as binary. Usually the speed is measured in seconds for example 8kbps means you moved 8000 bits or 8 kilo-bits in a second between two telecommunication points. Moving 8000 binary digits in a second isn’t too bad…right? So why is my stuff moving slow. Isn’t that close to moving an 8KB SQL page? No, let’s keep going.
One Byte is equal to 8 bits. One Kilobytes (KB) is 1024 bytes or 8192 bits. One Megabyte (MB) is 1,048,576 bytes or 8,388,608 bits and for fun, lets do Gigabytes. One Gigabyte (GB) is 1,073,741,824 bytes or 8,589,934,592 bits. This is a lot of math and there are wonderful calculators around to help you compute your current and desired throughput.
On to our next interesting fact: To go over the wire, your Bytes are being transferred into bits and then back up to Bytes on the other end. So if your connection is 8kbps (remember that is kilo-bits per second) you are only moving about 1000 Bytes per second. Let’s look at my gigabit connection. If I am moving one gigabit per second (1gbps) then I am only moving (I am rounding) about 120 Megabytes (MB) per second. That is a big difference that what I thought I should be moving.
I know there are a lot of cool ways to move data faster, but this is a concept that every DBA should keep at the back of their mind even if it is just to perform a party trick to make your network engineer friends feel included.
Happy Biting!
Wait, It gets worse. Even though the theoretical bandwidth for Gigabit Ethernet is 125MBs in reality because of network load/congestion, switches, fabric, TCP overhead etc its somewhere in the range of 35-70MBs.
This is why NIC teaming and Isolating the different networks pays off. Otherwise you should expect a 1GB file to be transferred over the wire in ~30s. Not quite the Gigabit Ethernet that you expected … right?
Thank you so much! This is exactly the kind of extra stuff I am trying to find out.