Using SQLPAL, the SQL Server database engine went
from…
Only on Virtual Machines
Slide 3
Slide 3 text
On both virtual machines and containers
To Being Available Across ALL Of These
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
SQL Server on Linux and Containers: A Story in 4 Numbers
5 3 24 25
Estimated number
of years to port
SQL Server to
Linux natively
Weeks to working
prototype using
SQLPAL
Months to
release, including
support for
containers
Million Docker
container pulls
Slide 6
Slide 6 text
Ring 3
SQL Server SVCHOST
NTDLL.DLL NTDLL.DLL
KB.DLL KB.DLL
SQLPAL.DLL (PE)
win32k.sys (PE)
Linux Host Extension (ELF)
Ring 0 Linux Kernel
SQLPAL
Slide 7
Slide 7 text
IO Subsystem
A
A
B
B
IO Subsystem
A
A
B
B
C
D
C
D
Synchronous IO Asynchronous IO
Wait
IO
Completion
Issue IO
Slide 8
Slide 8 text
No content
Slide 9
Slide 9 text
No content
Slide 10
Slide 10 text
int epoll_wait(
int epfd,
struct epoll_event *events,
int maxevents,
int timeout
);
int io_getevents(
aio_context_t ctx_id,
long min_nr,
long nr,
struct io_event *events,
struct timespec *timeout
);
Challenges - Additional Reading
• SQL Server on Linux: How? Introduction
https://cloudblogs.microsoft.com/sqlserver/2016/12/16/sql-server-on-linux-how-introduction/
• Blog posts on SQL on Linux internals
https://blogs.msdn.microsoft.com/bobsql/tag/sql-server-on-linux/