在mssql-python中引入Apache Arrow支持

在mssql-python中引入Apache Arrow支持

💡 原文英文,约1400词,阅读约需5分钟。
📝

内容提要

mssql-python现在支持将SQL Server数据以Apache Arrow结构提取,提升了速度和内存效率。此功能允许在Polars、Pandas等库中无缝操作数据,避免了Python对象创建,降低了内存使用。新增的API包括cursor.arrow_batch、cursor.arrow和cursor.arrow_reader,适用于不同的数据提取需求,尤其在处理时间类型时表现突出。

🎯

关键要点

  • mssql-python现在支持将SQL Server数据直接提取为Apache Arrow结构,提升了速度和内存效率。

  • 此功能允许在Polars、Pandas等库中无缝操作数据,避免了Python对象创建,降低了内存使用。

  • 新增的API包括cursor.arrow_batch、cursor.arrow和cursor.arrow_reader,适用于不同的数据提取需求。

  • 在处理时间类型(如DATETIME和DATETIMEOFFSET)时,新的提取路径表现尤为突出,消除了Python端的每值转换。

  • Arrow路径在大多数SQL Server类型的测试中表现出更快的速度,尤其是时间类型。

  • 对于API工作负载,Arrow路径在序列化结果为JSON时也能显著提高性能。

  • 在Linux上,NVARCHAR的提取时间较长,未来将进行优化以提高性能。

延伸问答

mssql-python如何提升SQL Server数据提取的效率?

mssql-python通过支持将SQL Server数据直接提取为Apache Arrow结构,避免了Python对象创建,从而提升了速度和内存效率。

新增的API有哪些,分别适用于什么场景?

新增的API包括cursor.arrow_batch、cursor.arrow和cursor.arrow_reader,分别适用于批量提取、一次性提取整个结果集和懒加载读取大结果集。

在处理时间类型数据时,mssql-python的表现如何?

在处理时间类型如DATETIME和DATETIMEOFFSET时,mssql-python的Arrow路径表现突出,消除了Python端的每值转换,显著提高了速度。

使用mssql-python时如何避免内存使用过高?

可以使用cursor.arrow_batch或cursor.arrow_reader来分批提取数据,避免一次性加载整个结果集,从而降低内存使用。

mssql-python在Linux上提取NVARCHAR时有什么问题?

在Linux上,NVARCHAR的提取时间较长,主要由于当前的UTF-16到UTF-8转换路径较慢,未来将进行优化。

如何开始使用mssql-python和Apache Arrow?

可以通过安装或升级mssql-python和pyarrow来开始使用,使用cursor.arrow()替代fetchall()来提取数据。

➡️

继续阅读