GN⁺ 2023-12-20 | parent | ★ favorite | on: Jepsen의 MySQL 8.0.34 평가(jepsen.io)
Hacker News 의견
  • "repeatable read"가 나쁜 아이디어라고 오랫동안 주장해왔음. 구현이 완벽하더라도, 데이터베이스에서 올바르게 작동하더라도 복잡한 쿼리를 다룰 때 이해하기 어려움.

    • 두 가지 격리 수준이 의미가 있다고 생각함:
      • read committed
      • serializable
    • serializable 설정은 예상치 못한 일이 없음. read committed 방향은 데이터에 일관된 뷰를 원하면 행을 읽기 시작하기 전에 잠가야 한다는 것이 명백함.
    • read committed는 일반 멀티스레드 코드와 메모리 관리와 매우 유사하여 대부분의 엔지니어가 직관적으로 이해할 수 있음.
    • serializable은 매우 엄격해서 예상치 못한 실수를 하기 어려움.
    • 중간 수준은 아무도 속하지 않는 땅이며, Read Committed보다 덜 일관된 것은 더 이상 데이터베이스가 아님.
  • FOSSDEM-2024에서 "Isolation Levels and MVCC in SQL Databases: A Technical Comparative Study" 발표 예정.

    • Oracle, MySQL, SQL Server, PostgreSQL, YugabyteDB 비교 연구.
  • AWS RDS에 대한 글을 평가하고 있으나, AWS Aurora (MySQL)에 대한 초점이 있는지 궁금함. AWS는 MySQL이나 PostgreSQL인 척하는 데이터베이스 플랫폼을 구축함. Aurora MySQL이 RDS나 MariaDB와 같은 "기능"을 가지고 있는지 보는 것이 흥미로울 것임.

  • 많은 일관성 아티팩트를 보여주는 기반 위에 구축된 "실제로 작동하는 시스템"들을 보여주는 훌륭한 예시라고 생각함.

  • RDS 복제가 5분 만에 작동을 멈추고 건강 검사 실패 알림이 없는 것이 다소 걱정됨.

  • append (a)가 주어진 테이블에서 실제 SQL 작업에 어떻게 매핑되는지, TEXT 필드가 리스트로 사용되는지 궁금함.

    • MySQL의 repeatable read 모드에서 단일 SELECT가 단일 행을 선택하고 불가능한 결과를 반환한 문제가 있었음. 예를 들어, SELECT min(value), max(value) FROM table WHERE id = 1;에서 id가 기본 키인데 min과 max에 대해 서로 다른 값을 얻은 적이 있음.
  • 이론적인 격리 모드 정의와의 비교뿐만 아니라 PostgreSQL, MS SQL, Oracle과 같은 다른 인기 있는 관계형 데이터베이스와의 비교가 도움이 될 것임. 개발자들이 호환성을 확보하고자 할 때 염두에 둬야 할 사항임.

  • "SELECT ... FOR UPDATE"가 이러한 모든 문제에 대한 해답인 것 같음, 업데이트할 행을 잠그면 모든 것이 광고된 대로 작동함.

  • 오늘 일을 좀 하려고 했는데, aphyr의 'call me maybe'와 jepsen.io는 인터넷에서 읽은 최고의 콘텐츠 중 일부임에 감사함.

  • MySQL 분석 내용 중 얼마나 많은 부분이 기본 스토리지 엔진으로 InnoDB를 사용하는 MariaDB에 대해 동일할지 궁금함.