Backend/DB

    oracle insert all vs insert into ~ union all 왜 union all이 빠른가

    oracle insert all vs insert into ~ union all 왜 union all이 빠른가

    insert all vs insert into ~ union all oracle에서 많은 양의 row을 한 번에 입력할 일이 있어서 처음에 insert all을 사용했다. insert all을 사용하는 문장은 다음과 같다. insert all into dummy(id, col1, col2, col3) values (1001,'30841','30842','30843') into dummy(...) values (...) ... select * from dual; 처음엔 이 문장이 mysql의 insert into values()... 와 비슷하게 생겼길래 그냥 갖다썼다. 근데 알고보니 성능이 떨어진다고 한다. union all 을 이용한 insert into가 훨씬 더 빠르다는 것이다. union all을..

    MySQL varchar(255)를 사용하는 이유?

    이유 MySQL에서 테이블을 만들 때 varchar(255)를 자주 사용했다. varchar가 가변길이 타입으로 char에 비해 실제 저장한 데이터의 크기만큼 저장한다고 알고 있었다. 그런데 왜 하필 255인지는 생각해본 적이 없어 알아보았다. MySQL 8.0의 공식 문서를 보면 다음과 같이 적혀있다. Values in VARCHAR columns are variable-length strings. The length can be specified as a value from 0 to 65,535. The effective maximum length of a VARCHAR is subject to the maximum row size (65,535 bytes, which is shared among a..

    read commited와 repeatable read 차이점

    헷갈리는 차이점 두 격리 수준에 대해 헷갈렸는데 정리해보고자 한다. BEGIN TRANSACTION; SELECT * FROM T; WAITFOR DELAY '00:01:00' SELECT * FROM T; COMMIT; 한 트랜잭션이 위 쿼리문을 실행한다고 하자. SELECT * FROM T; 를 실행하고 1분 후 다시 SELECT * FROM T; 를 실행하는 쿼리다. read commited에서는 커밋된 어떤 데이터든 볼 수 있다. 첫 번째 SELECT * FROM T; 이후에 기다리던 1분 동안 동시에 실행되던 다른 트랜잭션들이 해당 테이블의 데이터를 추가, 수정, 삭제하고 커밋한다면 해당 내용이 반영된다. 따라서 두 번째 SELECT * FROM T;를 실행했을 때 첫 번째와 결과가 달라질 수 ..

    MySQL 로그인 (window)

    MySQL 로그인 (window)

    로그인 먼저 mysql이 깔린 곳으로 이동 나의 경로는 C:\Program Files\MySQL\MySQL Server 8.0\bin mysql -u root -p 이동 후 위 커맨드를 쳐서 비밀번호 입력 후 root에 로그인하기 ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost:3306' (10061) 위와 같은 오류가 뜬다면 mysql 서버가 실행중이 아닌 것이다. 윈도우 서비스 항목(검색하면 나온다)에 들어가서 Mysql80을 서비스 시작한다. C:\Program Files\MySQL\MySQL Server 8.0\bin>mysql -u root -p Enter password: ******** Welcome to the MySQL m..