- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
让我们想象一个环境:有一个数据库客户端和一个数据库服务器。数据库客户端可以是 Java 程序或其他程序等;数据库服务器可以是mysql、oracle等。
需求是在数据库服务器上的一个表中插入大量记录。
最简单的方法是有一个循环,在这个循环中客户端每次插入一条记录,直到所有记录都被插入。这是单线程顺序插入。
还有另一种多线程并发插入方式,让客户端同时启动多个线程,每个线程向表中插入一条记录。直觉上,因为这些记录是独立的,并且假设现代数据库服务器带有 RAID,其中并发 IO 得到很好的支持,它们似乎能够为多个插入获得实际和真正的并发,因此,这种方式可以改进性能,与上述方法相比。
然而,当我深入了解更多细节后,我发现情况可能并非如此。此链接 -- Multi threaded insert using ORM?说在同一张表上插入需要对整个表上的每一次写入进行锁定。因此,每个插入只是阻塞另一个后续插入,最终,这种方式只是另一种类型的顺序多次插入,根本没有性能提升。
我的问题如下:
尽管看起来处理大量插入的最好方法是启用批量插入,但我仍然很好奇在插入发生时锁定整个表的理由。
Cảm ơn trước nhé!
============================================= ======================
经过大量阅读和研究,事实证明我的问题实际上是错误的。真正的事情是一个插入不会同时阻塞另一个插入。(至少对于 Oracle 是这样)。
1 Câu trả lời
此答案需要了解数据库,这超出了此处简单答案的范围。由于您询问有关 Oracle 的信息:
Oracle 并不像您认为的那样锁定整个表。在插入过程中,本质上是表结构的锁(即,有人不能在插入中删除列),但在数据级别,没有锁。这意味着您可以在单个表上进行多个并发插入。更新(在 Oracle 中)是类似的。然而,在这种情况下,正在更新的数据上有一个行锁。所以你可以在同一张表上有很多并发更新;但不在同一行。
话虽如此,多线程插入KHÔNG加载大量数据的方式。为此,Oracle 提供了一种替代方法,即直接路径加载。在这种方法中,我们加载行集,而不是逐行加载(缓慢加载)。并不是单个插入速度慢,而是速度慢。恰恰相反,它们非常快。但即使每次插入 0.1 毫秒,当您必须加载 1 亿行时,也就是 2.7 小时!基于集合的方法允许数据库执行并行性,而不是手动的“本土”多线程方法因此,为了让您了解Có thể 做什么,我在大约 10 分钟内加载了大约 60 亿行(大约 1 TB 数据)。最后,数据加载通常受 CPU 限制;不受 IO 限制。
关于java - 数据库多线程插入(更新)和单线程顺序插入(更新)的性能比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42708374/
Tôi đang sử dụng Bootstrap với css và java script. Tôi thực sự gặp khó khăn khi vẽ phần nền này bằng CSS mà không ảnh hưởng đến mã front-end. Trong nhiều câu hỏi, mọi người đặt chiều rộng và chiều cao thành 0%. Nhưng vì thanh điều hướng của tôi, tôi không thể sử dụng
Tôi đang viết một chương trình bằng C để đọc nội dung của một tập tin. Mã như sau: #include void main() { char line[90]; while(scanf("%79[^\
Tôi muốn lấy tất cả các đường góc của một mảng ma trận bằng JavaScript. Giả sử đầu vào và đầu ra như sau: đầu vào = [ [1,2,3], [4,5,6], [7,8,9], ] đầu ra =
Tôi có thể vẽ các đường thẳng, hình tròn và các hình dạng khác bằng pdfmake không? Nếu có, có tài liệu hoặc mẫu nào không? Tôi muốn thay thế pdfmake bằng jsPDF. Câu trả lời tốt nhất là có thể. pdfm
Tôi có một tiện ích svg nhỏ có mục đích hiển thị danh sách các góc (xem hình ảnh). Bây giờ góc là một phần tử đường thẳng chỉ có nét vẽ và không có phần tô. Nhưng bây giờ tôi muốn sử dụng một màu "tô bên trong" và một màu "nét vẽ/viền". Tôi đoán là phần tử đường thẳng không thể giải quyết được vấn đề này.
Tôi đang viết một trình chuyển đổi tia rất cơ bản cho một cảnh 3D với các đối tượng hình tam giác và mọi thứ hoạt động tốt cho đến khi tôi quyết định thử chuyển đổi tia từ các điểm khác ngoài điểm gốc của cảnh (0/0/0). Tuy nhiên, khi tôi thay đổi gốc tia thành (0/1/0), thử nghiệm giao điểm không thành công.
Câu hỏi này đã có câu trả lời: Tại sao mọi người lại viết "#!/usr/bin/env python" ở dòng đầu tiên của tập lệnh Python? (22 trả lời
Bạn nghĩ sao về việc sử dụng khoảng 50 dấu sao* và vẽ một đường ngang bằng vòng lặp for? Khi tôi thử điều này, kết quả là một danh sách gồm 50 dấu sao theo chiều dọc (thay vì theo chiều ngang). công khai void drawAstline() { f
Đây là giao diện người dùng khiến quả bóng rơi theo đường chéo, nhưng quả bóng vẫn đứng yên; chức năng luồn dây dường như không hoạt động chính xác. Bạn có thể cho tôi biết làm thế nào để quả bóng di chuyển được không? Vui lòng tải xuống một quả bóng và thay đổi thư mục để chương trình có thể tìm thấy nơi quả bóng của bạn được phân bổ. Không nhất thiết phải tải xuống sân bóng đá, nhưng bạn có thể tải xuống nếu muốn.
Tôi đang sử dụng Jmeter và Ant trong một trong các dự án của mình, khi chúng tôi tạo báo cáo, nó sẽ hiển thị URL, #Mẫu, Lỗi, Tỷ lệ thành công, Thời gian trung bình, Thời gian tối thiểu, Thời gian tối đa trong báo cáo. Tôi cũng muốn đưa mốc thời gian 90% vào báo cáo. Hiện nay
Tôi đang gặp một vấn đề bất thường và tôi hy vọng ai đó có thể giúp tôi. Tôi muốn vẽ đường Swing hoặc đường lượn sóng bằng Canvas (android) nhưng tôi không biết cách thực hiện. Phần này sẽ trở thành đuôi của nòng nọc, vì vậy lý tưởng nhất là tôi muốn nó có hình dạng giống hình tam giác, với một đầu lớn hơn.
Câu hỏi này đã có câu trả lời: Kiểm tra va chạm của các hình dạng bằng JavaFX (1 câu trả lời) Đã đóng 8 năm trước. Tôi đang sử dụng thư viện JavaFx 8. Nhiệm vụ của tôi rất đơn giản: Tôi muốn
Cách chia tệp theo phần trăm được đánh số. Số hàng? Giả sử tôi muốn chia tệp của mình thành 3 phần (60%/20%/20% phần), tôi có thể thực hiện thủ công: $ wc -l brown.txt 57339 brown.tx
Tôi đang cố gắng đạt được điều gì đó như thế này: Nhưng đây là cách tôi đã làm được. Bạn có thể giúp tôi đạt được kết quả như mong đợi không? Cập nhật: Nếu tôi xóa phần phụ thuộc bootstrap.css, vấn đề sẽ biến mất. Làm sao tôi có thể sử dụng nó với Bootstrap?
Hiện tại tôi đang xây dựng một trang web và gặp phải sự cố với transform: scale. Tôi có một nút và khi người dùng di chuột qua nó, hai điều xảy ra: nền "quét" qua với một đường góc cạnh nhãn nút thay đổi màu sắc nút trở nên hơi
Tôi cần vẽ biểu đồ số lượng lớn các điểm dữ liệu bằng các đường thẳng và phép biến đổi afin (điều chỉnh tỷ lệ biểu đồ cho phù hợp với Chế độ xem). Hiện tại, tôi đang sử dụng NSBezierPath, nhưng tôi nghĩ nó khá kém hiệu quả (vì các điểm được sao chép vào đường dẫn Bezier trước khi vẽ). Bằng cách cắt dữ liệu của tôi thành
Tôi đang sử dụng trình phát hiện tính năng HOG dựa trên phân loại SVM. Tôi có thể trích xuất biển số xe thành công, nhưng biển số xe trích xuất được có một số pixel/dòng không cần thiết ngoài số biển số. Quy trình xử lý hình ảnh của tôi như sau: Áp dụng trình phát hiện HOG trên hình ảnh thang độ xám để cắt các vùng được phát hiện
Tôi có hình ảnh sau: Tôi muốn tô đầy phần phác thảo của hình ảnh (tức là tôi muốn tô đầy các đường trong hình ảnh này). Tôi đã thử đóng hình thái nhưng việc sử dụng hạt nhân hình chữ nhật có kích thước 3x3 và 10 lần lặp lại không lấp đầy toàn bộ đường viền. Tôi cũng đã thử một hạt nhân 21x21 và 1 lần lặp, nhưng
Tôi phải tìm một thuật toán có thể tìm ra tổng số giao điểm giữa hai tập hợp mảng khi một trong các mảng đã được sắp xếp. Ví dụ, chúng ta có hai mảng này và chúng ta vẽ các đường thẳng tới các số tương ứng. Hai mảng này cung cấp cho chúng ta tổng cộng 7 giao điểm. Có thuật toán nào có thể giúp tôi giải quyết vấn đề này không?
Nói một cách đơn giản - Tôi muốn vẽ một tia/đường thẳng từ mặt phẳng cắt gần đến mặt phẳng cắt xa bằng phép chiếu phối cảnh. Tôi tin rằng có tọa độ thế giới được chuẩn hóa chính xác được tạo ra bằng cách nhấp chuột bằng các phương pháp được mô tả trong nhiều hướng dẫn lập trình OpenGL/đồ họa. Vấn đề tôi đang gặp phải là ánh sáng của tôi có vẻ
Tôi là một lập trình viên xuất sắc, rất giỏi!