2008-12-01 26 views
25

Tôi vừa đọc bài đăng này trên ars technica "Is MySQL really this bad?" và đã thực sự ngạc nhiên khi hầu hết mọi người dường như đồng ý rằng MySQL thực sự là xấu.MySQL có thực sự tồi tệ không?

Tôi chỉ tò mò, điều đó có thực sự quan trọng đối với hầu hết các ứng dụng không? Mọi người có nên ngừng sử dụng MySQL không? Tôi thực sự muốn nghe từ những người đã làm việc với nhiều cơ sở dữ liệu khác nhau.

Trả lời

31

Tôi đã sử dụng MySQL và vẫn sử dụng Oracle, và MySQL là xấu như họ làm cho nó ra được. Điều đó có nghĩa là không ai nên sử dụng nó? Tôi không nghĩ vậy.

Chúng tôi đã có một số ứng dụng nhỏ (một hoặc hai bảng, không quá 50 nghìn hàng), và thay vì sử dụng Oracle (mà lúc đó không được phép do cấp phép), chúng tôi đã phát triển trên MySQL. Đối với tất cả các lý do được trình bày trong chuỗi diễn đàn: miễn phí, dễ cài đặt, dễ quản lý, miễn phí, không nhiều chi phí.

Bây giờ điều này đã trở lại trong 3.23.x ngày khi những thứ như InnoDB hoặc FK hoặc bất kỳ nội dung nào khác không tồn tại. Và đối với những gì chúng tôi cần nó hoạt động hoàn hảo. Nó đã chèn, cập nhật, vv một cách dễ dàng, không bao giờ bị hỏng, phục hồi độc đáo ra khỏi băng, tất cả mọi thứ.

Nhưng sau đó các ứng dụng mà nó chạy theo không cần một Oracle hoặc SQL Server để chạy. Tất cả những gì tôi phải làm là để kiểm chứng đầu vào của mình, hãy đảm bảo rằng tôi đang sử dụng các giao dịch khi cần thiết (ở cấp ứng dụng, không phải ở MySQL vì trong những ngày đó không tuân thủ ACID) và Đó là khá nhiều đó.

Phần tốt nhất là, một ứng dụng đặc biệt được viết vào năm 2002. Cuối cùng tôi đã kiểm tra, nó vẫn chạy 6 năm sau, vẫn còn trên MySQL (tôi nghĩ là 4.1 bây giờ hoặc một cái gì đó) và vẫn làm chính xác những gì nó đã được viết làm.

Vì vậy, có, nó hút cho thương mại điện tử, ngân hàng hoặc lưu trữ dữ liệu của bất kỳ sự đa dạng nào (cũng đã thử điều đó). Nhưng nếu bạn cần một ứng dụng Recipe Box nhanh chóng, hoặc một số ứng dụng nhỏ twiddly khác, sau đó MySQL sẽ làm việc tốt.

Cảm giác của tôi là MySQL sẽ rời khỏi nó như một DBMS đơn giản, nhanh chóng chết, có lợi cho các trigger, ràng buộc, FK, v.v. Tôi nghĩ đó là nơi mà MySQL có thể chơi. Nếu yêu cầu DB của bạn là đơn giản, MySQL sẽ làm việc 10 lần trong số 10. Ít nhất đó là trải nghiệm của tôi.

14

Đối với các hệ thống lớn và phức tạp, vâng, có đủ lỗi/quirks có thể khiến người đứng đầu xấu xí của họ - Tôi tin rằng lý do mọi người luôn luôn đi với MySQL trên PostgreSQL là tên "MySQL" hấp dẫn hơn.

Tại sao PostgreSQL chọn ném lên hàng rào thậm chí có thể phát âm tên của họ, tôi sẽ không bao giờ biết - toàn bộ phần của trang wikipedia của PostgreSQL được dành riêng cho PostgreSQL's name.

+0

Điều gì trên trái đất khó phát âm về Postgres-Q-L? Postgres phát triển theo cách dự án cơ sở dữ liệu Ingres, ngược lại, và vì nó hỗ trợ SQL chuẩn cho các truy vấn, họ gọi nó là PostgreSQL. – Craig

+0

Tôi nghĩ rằng tỷ lệ nhận con nuôi nói cho chính họ, @Craig. https://www.pinterest.com/pin/196821446184618973 Trong năm 2011, 9% các nhà phát triển đã sử dụng PostgreSQL như trái ngược với 56% của MySQL. – Bobort

+0

Tất nhiên, khoảng 9% trong số đó 56% sẽ thực sự đủ điều kiện là "nhà phát triển", vì vậy ... – Craig

4

Nếu bạn đã đọc bài viết bạn đăng, bạn sẽ hiểu rằng bạn không nên tránh mọi lúc. Đó là nhiệm vụ cụ thể mà hệ thống cơ sở dữ liệu khác có thể hoạt động tốt nhất.

Bài báo chỉ rõ vấn đề với:

  • Auto-increment ghi đè một cách rõ ràng
  • bất hợp pháp DATETIME, DATE, hoặc các giá trị dấu thời gian được chuyển đổi thành các “zero”
  • ALTER TABLE cho một kết quả bảng InnoDB trong thay đổi đối với giá trị cột
  • Đổi tên cột không cập nhật định nghĩa FK
  • ...

Nếu bạn không làm các loại hoạt động này, hơn MySql là tốt. Tôi đang sử dụng PostGres và MySql ... Tôi nghĩ rằng MySql nhận được nhiều phổ biến bởi vì nó có sẵn trên nhiều nhà cung cấp hosting và không PostGres. Nhưng, tôi không có vấn đề gì khi sử dụng MySql khi cần thiết. Tôi có thể không chọn nó nếu tôi có tất cả các tùy chọn nhưng chắc chắn không phải là sản phẩm xấu ...

0

Wikipedia (trang web phổ biến thứ bảy trên thế giới; có hơn hai triệu bài viết và hơn 15 triệu trang) được xây dựng trên MySQL. Đó là tốt đủ cho tôi :)

2

Có hai thái cực, nơi bạn sẽ tìm thấy người dùng bất mãn:

  • Rất nhiều người trải nghiệm MySQL thông qua nhà cung cấp hosting của họ. Những người trên các lưu trữ rẻ hơn có xu hướng được nhồi nhét vào ồ ạt quá tải, phần cứng underpowered và kết quả là có kinh nghiệm xấu.

  • Sau đó, có những người cần các hệ thống đồ sộ với sự thất bại phức tạp và sao chép đang diễn ra. MySQL có thể quy mô, nhưng nó không đẹp hay đơn giản.

Đó là DB của sự lựa chọn nhiều nhất vì nó đã tồn tại mãi mãi và có rất nhiều công cụ để chọc nó. Theo thời gian, trừ khi Sun làm điều gì đó với nó, nó sẽ được thay thế bởi PostgreSQL hoặc một công nghệ DB mới hơn.

5

Nó phụ thuộc thực sự những gì bạn mong đợi. Hầu hết các vấn đề này không thực sự là lỗi với MySQL, nhưng cách nó luôn hoạt động (duy trì khả năng tương thích ngược) - cách nó được làm tài liệu.

Một số vấn đề mà tác giả gặp phải có thể khắc phục bằng cách sử dụng chế độ nghiêm ngặt của MySQL 5.0 - tuy nhiên, bạn không muốn thực hiện việc này nếu bạn đang sử dụng ứng dụng cũ chưa được xây dựng để hoạt động với chế độ nghiêm ngặt , vì bạn sẽ nhận được lỗi mà ứng dụng của bạn không mong đợi.

+0

Còn cách mà ngay cả bây giờ, vào tháng 11 năm 2016, nếu ổ đĩa mất điện trong khi ghi tập tin InnoDB bị hỏng và cơ sở dữ liệu thậm chí không thể khởi động lại? – Craig

24

Mọi người không phàn nàn về những điều họ không sử dụng.

+0

Ý kiến ​​của một bộ phận chính. Bravo. Điều này kết thúc với sự nghi ngờ của tôi. –

3

MySQL tập trung vào tốc độ và mở rộng quy mô với phần cứng hàng hóa. Các thương hiệu RDBMS khác tập trung vào các bộ tính năng khác nhau, chẳng hạn như sự ổn định và tiêu chuẩn. Bạn nên đọc this interesting comparison giữa postgresSQL và MySQL thực sự mở rộng về những khác biệt quan trọng.

MySQL có cách sử dụng của nó, và như một khách hàng hài lòng, tôi chỉ có (chủ yếu là?) Những điều tốt đẹp để nói về nó.

3

Hầu hết các sự cố của MySQL đều không hoạt động. Bạn có thể yêu cầu mã này phải nghiêm ngặt với đầu vào không hợp lệ hoặc yêu cầu sử dụng công cụ lưu trữ có khóa ngoại, nhưng lý do khiến danh tiếng xấu là nó cực kỳ lỏng lẻo theo mặc định.

Mặt khác thiết lập mặc định với vài lần kiểm tra nghĩa là nó nhanh. Trong một số trường hợp, tốc độ đáng giá hơn tính toàn vẹn của dữ liệu và không có gì sai nếu nó được sử dụng ở đúng nơi.

4

MySQL miễn phí, nhanh chóng, dễ cài đặt và hoạt động cho các ứng dụng đơn giản. Đó là di sản của MySQL, và tại sao nó trở nên phổ biến.

MySQL đã phát triển vượt ra ngoài "cơ sở dữ liệu nhỏ" có thể "khởi nguồn", cố gắng hết sức để phá vỡ thị trường RDBMS quy mô cao truyền thống và thực hiện bộ ba thống trị của Oracle, MS SQL Server và IBM DB2. Vì vậy, thị trường hiện nay có nhiều khả năng so sánh MySQL với "các chàng trai lớn", thay vì các dự án mới nổi khác. MySQL của foibles tự nhiên dường như ít tha thứ trong ánh sáng này.

PostgreSQL từ lâu được coi là đối thủ cạnh tranh chính đối với MySQL, vì cả hai đều là nguồn mở. PostgreSQL được cho là một triển khai thực hiện tốt hơn SQL, nhưng nó có một đường cong học tập dốc hơn. Nó cũng không cung cấp một cổng Win32 bản địa cho một vài năm quan trọng trong đó MySQL đã thiết lập rất nhiều thị phần. PostgreSQL chưa bao giờ có nỗ lực tiếp thị đằng sau nó để tạo nên nền tảng bị mất.

+0

MySQL là miễn phí: không phải allways –

+1

@Hugues: Bạn đang đề cập đến giấy phép thương mại MySQL từ Sun? Đối với những gì nó có giá trị, có phân phối thương mại của PostgreSQL quá, theo tên sản phẩm EnterpriseDB. –

+1

Không, chỉ trong công ty tôi làm việc, chúng tôi bán phần mềm không phải là GPL và vì vậy chúng tôi phải trả tiền cho giấy phép. Trong trường hợp này sử dụng Firebird hoặc PotgreSQL thực sự là miễn phí –

3

Vấn đề này với MySQL là chúng bắt đầu từ sai địa điểm. Quay lại trong ngày MySQL thực sự chỉ là một tập hợp các tệp được lập chỉ mục mà bạn có thể chạy một SQL Engine (tiểu học) chống lại. Nó không có các giao dịch, ràng buộc, thủ tục, trình kích hoạt, truy vấn con hoặc hầu như bất kỳ thứ gì khác làm cho RDBMS thực thành một cơ sở dữ liệu thực.

Thậm chí sau đó nó có các fanboys, và bất cứ khi nào bạn đưa nó lên với câu trả lời của họ là (a) bạn nên mã hóa tất cả những thứ trong logic ứng dụng và (b) nhưng nhìn nhanh như thế nào (nó được, cho rằng nó đã không thực sự làm bất cứ điều gì).

Tuy nhiên gần đây, MySQL đã thấy ánh sáng và ghép trên nhiều phần trên. Các cuộc trò chuyện với các fanboys giờ đây thường chạy dọc theo các dòng 'nhưng cũng là hs MySQL!' Bây giờ tôi chắc chắn rằng có rất nhiều lập trình viên sáng tạo hoạt động trên MySQL, nhưng như chúng ta đều biết các chương trình có các tính năng ghép lại thay vì được thiết kế từ mặt đất trở nên chịu trách nhiệm hơn về lỗi, tính không phù hợp và hành vi không nhất quán.

Đó là những gì trí tuệ nhận được cho chúng ta biết chúng tôi có (bỏ qua các fanboys).

Cá nhân tôi có khuynh hướng sử dụng MySQL nhiều hơn trước phiên bản 5, và tôi chắc chắn rằng nỗ lực được đưa vào nó vào khoảng phiên bản 7 có thể hoàn toàn đáng tin cậy đối với các ứng dụng quan trọng. Trong khi đó, DB2, Oracle, MSSQL và Postgres là những lựa chọn khôn ngoan hơn cho các ứng dụng quan trọng vì chúng được xây dựng như là RDBMS thực từ khi đi và cho phép bạn ngủ ngon vào ban đêm khi biết dữ liệu của bạn hoàn toàn an toàn. MySQL là một giải pháp tuyệt vời trong các lĩnh vực một hoặc hai bước trở lại từ đó.

+0

Ngay cả khi đó, MySQL đã nhanh chóng đọc nhưng không đặc biệt ghi nhanh, vì nó chỉ có thể xử lý một lần ghi mỗi lần. – Craig

5

Tôi đã làm việc với một ứng dụng mà có thể sử dụng bất kỳ DB chính: MSSQL, Oracle, MySQL, Informix, DB2, Sybase vv

Từ đó tất cả các vấn đề nhất để hỗ trợ là oracle. Nhưng nói chung tất cả chúng (oracle included) đều rất dễ làm việc, cho ứng dụng sử dụng các câu lệnh SQL rất đơn giản.

Mọi người có nên ngừng sử dụng MySQL không?

Vâng, tùy thuộc vào công cụ nào phù hợp hơn với nhu cầu của bạn.

Rất nhiều tổ chức chọn một DB và họ sẽ đến tận cùng thế giới với nó.

Tuy nhiên có một điều đó là rất thú vị là một số trong những công ty quan trọng nhất trong Internet sử dụng nó:

  1. Google
  2. eBay
  3. Yahoo!

Và họ không sử dụng nó cho quá trình nhân sự, nhưng đối với lõi (Tôi sẽ cố gắng để có được một báo giá cho rằng)

Trong lúc này đây là danh sách các khách hàng MySQL có .

http://www.mysql.com/customers/#e-Commerce

Một số người khác:

  • Amazon
  • Facebook
  • Flickr
  • Youtube

Đó là một trong những lý do cho Sun để mua MySQL cho almost 1 billion usd. Plus, theo cách này Sun có thể cạnh tranh với MS với máy chủ MSSQL + .net và Oracle + Weblogic

Nếu bạn thấy chúng có cả máy chủ ứng dụng và cơ sở dữ liệu, Sun thiếu DB và quyết định mua nó.

Tất nhiên không phải tất cả các công ty đều lớn, và đối với một số MSSQL kinh doanh khép kín và Oracle được chào đón nhiều.

EDIT Argh ... Tôi không thể tìm thấy tài nguyên nêu rõ điều này (không cần phải đọc nhiều trang). Người duy nhất tôi tìm thấy là trên Wikipedia http://en.wikipedia.org/wiki/Wikipedia#Software_and_hardware

+4

Bạn biết đấy, nói rằng một số công ty siêu lớn đang sử dụng một sản phẩm cụ thể không phải là lý do chính đáng để sử dụng cùng một sản phẩm đó. Các công ty này là LỚN và khá nhiều công cụ bạn có thể tìm thấy có lẽ là một trong những quy trình của họ ở đâu đó. Đó chỉ là bản chất của trò chơi. – NotMe

+1

Theo như mặt trời mua mysql: họ cần một cái gì đó, bất cứ điều gì, để thử và cạnh tranh với những kẻ khác để cung cấp một bộ đầy đủ cho không gian phát triển ứng dụng. MySql đã tạo nên một cái tên cho chính nó, điều này khiến nó trở nên hấp dẫn. Thành tích kỹ thuật hiếm khi tìm đến các loại giao dịch đó, ngoài Sun tự hỏi liệu chúng có thể làm việc hiệu quả hay không. – NotMe

+0

Thêm PInterest vào danh sách;) https://engineering.pinterest.com/blog/sharding-pinterest-how-we-scaled-our-mysql-fleet/ – dosdebug

0

Nó hoạt động cho các dự án nhỏ, piddly, không thú vị của tôi mà không có nhiều bảng được liên kết cao.

7

Rất nhiều người thề bởi MySQL. Nhiều người trong chúng ta chỉ thề với nó.

Luôn có ý tưởng rằng bạn sẽ không cần một số tính năng được cung cấp bởi các hệ thống cơ sở dữ liệu khác ... nhưng sau đó một ngày bạn cần đến chúng.

Gần đây nhất đối với tôi là các ràng buộc kiểm tra. Tôi thực sự cần ràng buộc kiểm tra cần thiết bởi vì mọi người tiếp tục đảo ngược các cột kinh độ và vĩ độ trong DB của tôi. Tôi đã thêm ràng buộc ở một vài nơi và sau đó phát hiện ra rằng nó chỉ bị bỏ qua. Gây rất nhiều đau đớn.

Điều khác đã giết tôi là miễn trừ rất nhiều thứ từ giao dịch - đáng chú ý nhất là sửa đổi giản đồ. Tại sao tôi không thể thay đổi hoặc đổi tên các bảng và cuộn chúng trở lại nếu tôi không thích những gì đã xảy ra?

3
  1. Tôi chỉ tò mò, điều đó có thực sự quan trọng đối với hầu hết các ứng dụng không? -Không. Nó không quan trọng lắm.
  2. Mọi người có nên ngừng sử dụng MySQL không?
    • Không có cách nào.
  3. Tôi thực sự muốn nghe từ những người đã làm việc với nhiều cơ sở dữ liệu khác nhau.

Đây là trải nghiệm của tôi. Tôi đã được dạy trong trường đại học excel và sau đó truy cập trong một lớp học văn phòng máy tính cơ bản. Đó là "cơ sở dữ liệu đầu tiên của tôi". Bây giờ tôi không thể hét đủ "EXCEL IS NOT A DATABASE !!!" Sau đó khi tôi tham gia một lớp cơ sở dữ liệu, chúng tôi đã được dạy Mysql. Vì vậy, một cách tự nhiên khi tôi bước vào thế giới thực Tôi đã sử dụng những gì tôi biết.

Tôi làm việc cho một công ty dựa trên web sử dụng mysql làm DB chính, nhưng gần một năm trước, chúng tôi bắt đầu làm việc với dữ liệu GIS và quyết định sử dụng PostgreSQL cho thông tin đó. Tôi đã học được postgreSQL một cách miễn cưỡng, và từ đó đã đến để thích nó, nhưng đồng thời nó đã giúp tôi đánh giá cao mysql hơn nữa.

Ý kiến ​​của tôi là MySQL là một DBMS lập trình viên nhiều hơn. Trong khi postgreSQL, và những người khác như nó là DBMS của quản trị viên cơ sở dữ liệu. Là một lập trình viên, tôi yêu Mysql cho:

  • Crap in Mặc định.
  • Làm thế nào nó xử lý các đầu vào lộn xộn.
  • Làm theo ý tôi, không phải những gì tôi nói (ngày 31 tháng 2 được chuyển đổi thành ngày tháng Ba thích hợp).
  • Tự do (nó không tuân thủ các tiêu chuẩn SQL nghiêm ngặt đối với T).

Tôi làm việc tại một công ty không biết 1NF là gì khi tôi đến đó. Nhưng công ty là thành công, và là một lập trình viên tôi hài lòng với sự lựa chọn DBMS.

+1

"Tự do (nó không tuân thủ các tiêu chuẩn SQL nghiêm ngặt đến một T). " Huh? Tôi có thể hiểu các lập luận khác, nhưng cái này ... tự do là ... cái gì? không tuân thủ? Có những trường hợp cần thiết (không có DB nào thực thi thông số SQL cho T), nhưng nói chung không có lý do chính đáng để không hỗ trợ chuẩn mà bạn yêu cầu hỗ trợ (phần "SQL" trong "mySQL"). IMHO. – StaxMan

1

tôi sợ nó là - Tôi đã sử dụng nó rất nhiều và tôi đã không hài lòng với điều đó

0

Tôi chỉ muốn ném ra có một vài trang web dữ dội tải như Digg sử dụng MySQL. Tôi hiện đang xem xét lựa chọn nào tốt hơn cho ứng dụng (PHP) của tôi - MySQL (mà tôi quen thuộc hơn) hoặc PostgreSQL (có ít hỗ trợ PHP hơn (không có trình bao bọc hướng đối tượng) nhưng dường như đã được thử và thử nghiệm).

1

Tôi đã sử dụng MySQL từ khoảng năm 2002 và luôn thích làm việc với nó. Tôi nhớ sớm trong sự nghiệp lập trình của tôi, mọi người sẽ viết tắt MySQL như một cơ sở dữ liệu đồ chơi.

Tôi hiểu tất cả các đối số chống lại việc sử dụng MySQL cho các dự án kho dữ liệu lớn. Bạn sẽ không muốn sử dụng nó nếu bạn đang xây dựng một ứng dụng công ty thẻ tín dụng lớn.

Có nói rằng, đối với hầu hết mọi thứ trên web, MySQL thực hiện công việc tốt. Nếu bạn có bất kỳ nghi ngờ, chỉ cần nhìn vào Wikipedia được xây dựng trên đầu trang của MySQL và PHP.

0

Câu hỏi này giống như các câu hỏi PHP không đổi: hầu hết các "vấn đề" của nó không phải là vấn đề đối với hầu hết mọi người sử dụng nó. Trong một môi trường nơi bạn có một ứng dụng chơi trên cơ sở dữ liệu - như một trang web - bạn sẽ tìm thấy rất nhiều vấn đề về giá trị mặc định và tính toàn vẹn tham chiếu chỉ Go Away vì ứng dụng phải chăm sóc chúng dù sao. Vì vậy, nó có. Và sau đó nó không quan trọng hơn DB không.

Chỉ cần cho đá, PostGreSQL được percieved như là đằng sau SQL trong một lĩnh vực rất quan trọng: nhân rộng. MySQL có bản sao được tích hợp sẵn và nó hoạt động khá nhiều. Nhưng nó không được tích hợp sẵn cho PostGreSQL: nó là một add-on, đòi hỏi một cấp độ khác về thiết lập và cấu hình. Đây là một nhận thức không may, nhưng tôi đã thấy nó hoàn toàn ngăn chặn một dự án có thể di chuyển sang PostGreSQL.

2

Thật dễ dàng để rag trên MySQL, nhưng cỏ không nhất thiết phải xanh hơn với cơ sở dữ liệu khác. Tôi sử dụng MySQL hiện tại, và đã sử dụng Oracle và MS SQL trong quá khứ, và mặc dù các chi tiết mờ ảo, tôi nhớ rất nhiều lần tìm lỗi/tính năng trong cả Oracle và MS SQL khiến tôi nghĩ "mọi người trả tiền cho việc này ?!? ". Mỗi cơ sở dữ liệu có vô số vấn đề, nhưng ít nhất bạn không phải trả tiền cho các vấn đề trong MySQL ...

Thực tế là các trang web lớn như Digg, Facebook, Flickr, YouTube, Wikipedia và nhiều những người khác chạy trên MySQL. Vậy thực sự nó có thể tệ đến mức nào ...?

Các vấn đề liên quan