Upgrade to Pro — share decks privately, control downloads, hide ads and more …

How Microsoft SQL Server Went Multi-Platform: SQLPAL

How Microsoft SQL Server Went Multi-Platform: SQLPAL

How did Microsoft made SQL Server available on Linux, Containers and ARM CPUs?

We'd love to tell the story on how we made SQL Server available to ecosystems outside of Windows in this talk. It's a great story that involves quite a bit of interesting technologies and we'd like to share that with everyone!

Speakers:
Argenis Fernandez
Brian Gianforcaro
Eugene Birukov

Video: https://youtu.be/zq1WTLnntIg

Brian Gianforcaro

September 20, 2019
Tweet

More Decks by Brian Gianforcaro

Other Decks in Technology

Transcript

  1. 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
  2. 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
  3. 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
  4. 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 );
  5. ThreadWaitContext - m_conditionVariable - m_waitInfos[] - m_mutex - m_signaledObjectIndex WaitableObject

    - m_lock - m_waitQueue (list of WaitInfo) Event - m_signalState Semaphore - m_currentCount - m_maximumCount WaitInfo - m_waitContext* (ThreadWaitContext) - m_parentObject* (WaitableObject)
  6. 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/