0

数据库IO有多慢?

 6 months ago
source link: https://www.jdon.com/72616.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

数据库IO有多慢? - 极道

大多数资深开发人员一定都经历过数据库 I/O 性能相当低的情况。但很多人可能没有意识到 I/O 操作有多慢,特别是数据库 I/O 速度与其他数据读写方法的速度之间的差距。

Java 是一种用于应用程序开发的常用技术。现在我们进行现场测试,看看Java中从Oracle和MySQL这两种典型数据库中检索数据的性能,并与从文本文件中检索数据的性能进行比较。

详细点击标题

  • 我们发现当使用SQL对上述数据表进行基于遍历的聚合操作并返回非常小的结果集时,数据库速度很快,比我们基于文本文件执行相同操作时快得多。这意味着遍历数据库中的数据表一点也不慢,或者可以说该数据存储格式具有相当不错的性能。
  • 障碍在于DBC 驱动程序非常慢。我们甚至怀疑这是一种有意的设计,它期望甚至强制数据不是从数据库中检索而是在数据库内部计算。

启示:

  • 当我们想要实现大数据计算的高性能时,从数据库中临时检索数据是不可行的,最好在数据库内部进行计算。
  • 如果必须先从数据库中取出数据才能真正处理计算,我们最好不要将数据存储在数据库中。

如果数据仍然保存在数据库中,那么无论我们在数据库外使用什么高性能算法,大多数情况下性能都不会令人满意;除非涉及的数据量非常小。

当数据库是唯一数据源时,有什么办法可以提高计算速度吗?
如果问题仅在于驱动程序速度慢,即速度慢不是由于数据库负载过重,我们可以使用并行处理来改善这种情况。

当并行线程数较少(一般<10)时,计算效率几乎呈线性上升。这意味着当有n个检索线程时,检索速度几乎快了n倍。测试结果是,6线程并行处理速度提升达5倍。

在测试中,4个线程使文本文件检索速度提高了3.6倍,复合表数据检索速度提高了3.8倍。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK