찾다
데이터 베이스MySQL 튜토리얼MySQL 5.6, 5.7, 8.0의 새로운 기능을 확인해 보세요!

MySQL의 역사에 대해서는 이미 많은 분들이 잘 알고 계실 것이라 여기에서는 자세히 다루지 않겠습니다. 다음은 제품 특성 측면에서만 개발 과정의 마일스톤을 요약한 것입니다.

권장: "mysql 비디오 튜토리얼"

1995년에 MySQL 1.0은 내부용으로만 출시되었습니다.

1996년에 MySQL 3.11.1이 출시되어 MySQL 2.x 버전을 직접 건너뛰었습니다.

1999년에 MySQL AB가 설립되었습니다. 같은 해에 Berkeley DB 스토리지 엔진을 통합한 MySQL 3.23이 출시되었습니다. 엔진은 Sleepycat에서 개발되었으며 트랜잭션을 지원합니다. 엔진을 통합하는 과정에서 소스 코드가 수정되어 후속 플러그형 스토리지 엔진 아키텍처의 기반이 마련되었습니다.

2000년 ISAM은 MyISAM 스토리지 엔진으로 업그레이드되었습니다. 같은 해에 MySQL은 GPL 계약을 기반으로 한 오픈 소스였습니다.

2002년에 MySQL 4.0이 출시되어 나중에 유명한 InnoDB 스토리지 엔진이 통합되었습니다. Innobase에서 개발한 이 엔진은 트랜잭션 및 행 수준 잠금을 지원하며 OLTP와 같은 높은 동시성 시나리오에 적합합니다.

2005년 MySQL 5.0이 출시되어 커서, 저장 프로시저, 트리거, 뷰, XA 트랜잭션과 같은 기능을 지원하기 시작했습니다. 같은 해 Oracle은 Innobase를 인수했습니다.

2008년 Sun은 MySQL AB를 10억 ​​달러에 인수했습니다. 같은 해 타이머(이벤트 스케줄러), 파티셔닝, 행 기반 복제 등의 기능을 지원하기 시작한 MySQL 5.1이 출시되었습니다.

2009년 Oracle은 Sun을 74억 달러에 인수했습니다.

2010년에는 다음과 같은 중요한 기능과 업데이트가 포함된 MySQL 5.5가 출시되었습니다.

● InnoDB는 MySQL의 기본 스토리지 엔진으로 MyISAM을 대체합니다.

● 멀티코어 확장으로 멀티코어 CPU를 최대한 활용할 수 있습니다.

● InnoDB 성능 개선에는 신속한 인덱스 생성 지원, 테이블 압축, I/O 하위 시스템 성능 개선, PURGE 작업이 메인 스레드에서 분리되고 버퍼 풀을 여러 인스턴스로 분할할 수 있는 기능이 포함됩니다.

● 반동기 복제.

● 이모티콘 표현을 저장하는 데 사용할 수 있는 utf8mb4 문자 세트를 소개합니다.

● 메타데이터 잠금을 소개합니다.

● 파티션 테이블 향상, RANGE COLUMNS 및 LIST COLUMNS라는 두 가지 새로운 파티션 유형이 추가되었습니다.

● MySQL Enterprise Edition에는 스레드 풀이 도입되었습니다.

● IO 읽기 및 쓰기 스레드 수를 구성할 수 있습니다(innodb_read_io_threads, innodb_write_io_threads). 이전에는 숫자가 1이었고 구성할 수 없었습니다.

● 더티 페이지 새로 고침 횟수를 제어하기 위해 innodb_io_capacity 옵션을 도입했습니다.

2013년에는 다음과 같은 중요한 기능과 업데이트가 포함된 MySQL 5.6이 출시되었습니다.

● GTID 사본.

● 무손실 사본.

● 복사가 늦어졌습니다.

● 라이브러리 레벨 기반 병렬 복제.

● mysqlbinlog는 binlog를 원격으로 백업할 수 있습니다.

● TIME, DATETIME 및 TIMESTAMP가 소수 초를 지원하도록 리팩터링되었습니다. DATETIME의 공간 요구 사항도 이전 8바이트에서 5바이트로 줄었습니다.

● 온라인 DDL. ALTER 작업은 더 이상 DML을 차단하지 않습니다.

● 이동 가능한 테이블스페이스.

● 통계 정보의 지속성. 마스터와 슬레이브 간에 또는 데이터베이스를 다시 시작한 후에 동일한 SQL의 실행 계획에 차이가 발생하지 않도록 하세요.

● 전체 텍스트 색인.

● InnoDB Memcached 플러그인.

● EXPLAIN을 사용하면 DELETE, INSERT, REPLACE, UPDATE 등 DML 작업의 실행 계획을 볼 수 있습니다. 이전에는 SELECT 작업만 지원되었습니다.

● 사용 가능한 최대 파티션 수를 8192개로 늘리고, 분할된 테이블과 분할되지 않은 테이블 간의 데이터 교환을 지원하고, 작업 중 파티션을 명시적으로 지정하는 등 파티션 테이블이 향상되었습니다.

● Redo Log의 전체 크기 제한이 기존 4G에서 512G로 확장되었습니다.

● Undo Log는 독립적인 테이블 공간에 저장할 수 있기 때문에 SSD에 두는 것이 더 적합합니다. 그러나 자동 공간 회수는 여전히 지원되지 않습니다.

● 데이터베이스를 다시 시작한 후 필요한 긴 준비 시간을 피하기 위해 버퍼 풀의 상태를 덤프하고 로드할 수 있습니다.

● 커널 뮤텍스 분할, 독립적인 새로 고침 스레드 도입, 다중 제거 스레드 설정 등 InnoDB 내부 성능이 개선되었습니다.

● 옵티마이저 성능이 향상되었고, ICP, MRR, BKA 등의 기능이 도입되었으며, 하위 쿼리가 최적화되었습니다.

MySQL 5.6은 MySQL 역사상 획기적인 버전이라고 할 수 있으며, 프로덕션에서 가장 널리 사용되는 버전이기도 합니다.

2015년에는 다음과 같은 중요한 기능과 업데이트가 포함된 MySQL 5.7이 출시되었습니다.

● 그룹 복제

● InnoDB 클러스터

● 다중 소스 복제

● 향상된 반동기화(AFTER_SYNC)

● WRITESET 기반 병렬 복제.

● 온라인으로 GTID 복제를 활성화하세요.

● 온라인으로 복사 필터링 규칙을 설정하세요.

● 버퍼 풀의 크기를 온라인으로 수정하세요.

● 동일한 길이의 인코딩된 바이트 내에서 VARCHAR의 크기를 수정하면 임시 테이블을 생성하지 않고 테이블의 메타데이터만 수정하면 됩니다.

● NUMA 아키텍처(innodb_numa_interleave)의 메모리 할당 전략을 설정할 수 있습니다.

● 투명한 페이지 압축.

● UNDO 테이블 공간 자동 재활용.

● 쿼리 최적화 프로그램 리팩토링 및 개선.

● 현재 실행 중인 SQL의 실행 계획(EXPLAIN FOR CONNECTION)을 확인할 수 있습니다.

● 서버 측에서 쿼리를 다시 작성할 수 있는 쿼리 다시 쓰기 플러그인을 도입했습니다.

● EXPLAIN FORMAT=JSON은 두 실행 계획의 장단점을 직관적으로 비교할 수 있도록 비용 정보를 표시합니다.

● Oracle의 함수 인덱스와 유사한 가상 열이 도입되었습니다.

● 새 인스턴스는 더 이상 기본적으로 테스트 데이터베이스와 익명 사용자를 생성하지 않습니다.

● 사용자 비밀번호, 비밀번호 만료 정책 및 사용자 잠금을 수정하는 데 사용할 수 있는 ALTER USER 명령을 소개합니다.

● mysql.user 테이블에서 비밀번호를 저장하는 필드가 비밀번호에서 인증_문자열로 변경되었습니다.

● 테이블 공간 암호화.

● 성능 스키마가 최적화되고 메모리 사용량이 줄어듭니다.

● 성능 스키마는 다양한 악기를 소개합니다. 일반적으로 사용되는 것에는 MySQL의 메모리 사용량을 확인하는 데 사용할 수 있는 메모리 사용량 계측, MDL의 보유 상태를 확인하는 데 사용할 수 있는 메타데이터 잠금 계측, 진행 상황을 확인하는 데 사용할 수 있는 Stage Progress 계측 등이 있습니다. 온라인 DDL.

● 동일한 트리거 이벤트(INSERT, DELETE, UPDATE) 및 동일한 트리거 시간(BEFORE, AFTER)을 통해 여러 트리거 생성이 가능합니다. 이전에는 하나의 트리거만 생성할 수 있었습니다.

● InnoDB는 기본적으로 파티션 테이블을 지원합니다. 이전에는 ha_partition 인터페이스를 통해 구현되었습니다.

● 분할된 테이블은 이동 가능한 테이블 공간 기능을 지원합니다.

● 통합 SYS 데이터베이스로 MySQL 관리를 단순화하고 비정상적인 문제를 찾아냅니다.

● 기본적으로 JSON 유형을 지원하고 다양한 JSON 기능을 도입합니다.

● 테이블 수준 멀티 스레드 백업을 지원하는 새로운 논리적 백업 도구인 mysqlpump를 도입했습니다.

● JavaScript, Python 및 SQL의 세 가지 언어를 지원하는 새로운 클라이언트 도구인 mysqlsh를 도입했습니다. 두 가지 API: X DevAPI 및 AdminAPI 전자는 MySQL을 문서 데이터베이스로 작동할 수 있고 후자는 InnoDB 클러스터를 관리하는 데 사용됩니다.

● mysql_install_db는 인스턴스를 초기화하는 데 사용되는 mysqld --initialize로 대체됩니다.

● systemd에 대한 기본 지원.

● super_read_only 옵션이 도입되었습니다.

● SELECT 작업에 대한 제한 시간(max_execution_time)을 설정할 수 있습니다.

● SHUTDOWN 명령을 통해 MySQL 인스턴스를 종료할 수 있습니다.

● 높은 동시성 시나리오에서 교착 상태 감지를 끄는 데 사용할 수 있는 innodb_deadlock_Detect 옵션이 도입되었습니다.

● ICP, MRR 활성화 여부 등 옵티마이저의 동작을 명령문 수준에서 제어할 수 있는 옵티마이저 힌트가 도입되었습니다. 이전에는 인덱스 힌트만 있었습니다.

● Boost.Geometry를 사용하여 이전 GIS 알고리즘을 대체하는 등 GIS 기능이 향상되었으며 InnoDB가 공간 인덱스를 지원하기 시작했습니다.

2018년에는 다음과 같은 중요한 기능과 업데이트가 포함된 MySQL 8.0이 출시되었습니다.

● 네이티브 InnoDB 기반 데이터 사전을 선보였습니다. 데이터 사전 테이블은 mysql 라이브러리에 있으며 사용자에게 표시되지 않습니다. mysql 라이브러리의 다른 시스템 테이블과 마찬가지로 데이터 디렉터리의 mysql.ibd 파일에 저장됩니다. 더 이상 mysql 디렉토리에 위치하지 않습니다.

● 원자적 DDL.

● INFORMATION_SCHEMA가 재구성되었으며, 일부 테이블은 데이터 사전을 기반으로 뷰로 재구성되었습니다.

● PERFORMANCE_SCHEMA 쿼리 성능이 향상되었으며 여러 내장 인덱스가 있습니다.

● 보이지 않는 색인.

● 내림차순 지수.

● 히스토그램.

● 일반적인 테이블 표현식.

● 창 기능.

● 역할.

● 리소스 그룹을 사용하면 스레드의 우선순위와 스레드에서 사용할 수 있는 리소스를 제어할 수 있습니다. 현재 관리할 수 있는 유일한 리소스는 CPU입니다.

● 서버 메모리에 따라 innodb_buffer_pool_size, innodb_log_file_size 및 innodb_flush_method를 동적으로 설정할 수 있는 innodb_dedicated_server 옵션이 도입되었습니다.

● 열을 빠르게 추가하세요(ALGORITHM=INSTANT).

● JSON 필드 부분 업데이트(JSON 부분 업데이트).

● 자동 증가 기본 키의 지속성.

● 지속 가능한 전역 변수(SET PERSIST).

● 기본 문자 집합이 latin1에서 utf8mb4로 변경되었습니다.

● UNDO 테이블스페이스는 기본적으로 활성화되어 있으며 온라인 수량 조정(innodb_undo_tablespaces)을 지원합니다. MySQL 5.7에서는 기본적으로 활성화되어 있지 않습니다. 활성화하려면 초기화 중에만 설정할 수 있습니다.

● 백업 잠금.

● 여러 사용자 스레드가 로그 버퍼에 동시에 쓸 수 있도록 허용하고 innodb_log_buffer_size의 크기를 동적으로 수정하는 등 로그 최적화를 다시 실행합니다.

● 기본 인증 플러그인이 mysql_native_password에서 caching_sha2_password로 변경되었습니다.

● 기본 메모리 임시 테이블이 MEMORY 엔진에서 TempTable 엔진으로 변경되었습니다. 전자에 비해 후자는 VARCHAR, VARBINARY 및 기타 가변 길이 필드의 가변 길이 저장을 지원합니다. MySQL 8.0.13부터 TempTable 엔진은 BLOB 필드를 지원합니다.

● Grant는 더 이상 암시적으로 사용자를 생성하지 않습니다.

● NOWAIT 및 SKIP LOCKED 옵션은 전자 상거래 시나리오에서 핫 행 문제를 해결하기 위해 SELECT ... FOR SHARE 및 SELECT ... FOR UPDATE 문에 도입되었습니다.

● 정규식 향상, 4개의 새로운 관련 함수 REGEXP_INSTR(), REGEXP_LIKE(), REGEXP_REPLACE(), REGEXP_SUBSTR()이 추가되었습니다.

● 쿼리 최적화 프로그램은 실행 계획을 세울 때 데이터가 버퍼 풀에 있는지 여부를 고려합니다. 이전에는 데이터가 디스크에 있다고 가정했습니다.

● ha_partition 인터페이스가 코드 레이어에서 제거되었습니다. 파티션 테이블을 사용하려면 InnoDB 스토리지 엔진만 사용할 수 있습니다.

● SUPER 권한을 대체하기 위해 더욱 세분화된 권한이 도입되었습니다. 이제 SUPER 권한을 부여하면 경고 메시지가 표시됩니다.

● GROUP BY 문은 더 이상 암시적으로 정렬되지 않습니다.

● MySQL 5.7에 도입된 테이블스페이스 암호화 기능은 Redo Log 및 Undo Log를 암호화할 수 있습니다.

● information_schema의 innodb_locks 및 innodb_lock_waits 테이블이 제거되고performance_schema의 data_locks 및 data_lock_waits 테이블로 대체되었습니다.

● 매개변수의 소스 및 수정 사항을 기록하기 위해performance_schema.variables_info 테이블이 도입되었습니다.

● 클라이언트 오류 메시지에 대한 통계가 추가되었습니다(performance_schema.events_errors_summary_xxx).

● 쿼리의 응답 시간 분포를 계산할 수 있습니다(sys.ps_statement_avg_latency_histogram() 호출).

● 열 이름 직접 수정을 지원합니다(ALTER TABLE ... RENAME COLUMN old_name TO new_name).

● 사용자 비밀번호에 따라 재시도 정책(Reuse Policy)을 설정할 수 있습니다.

● PASSWORD() 함수를 제거하세요. 이는 "SET PASSWORD ... = PASSWORD('auth_string')" 명령을 통해 사용자 비밀번호를 수정할 수 없음을 의미합니다.

● 코드 레이어에서 Query Cache 모듈이 제거되어 Query Cache 관련 변수 및 연산이 더 이상 지원되지 않습니다.

● BLOB, TEXT, GEOMETRY 및 JSON 필드를 사용하면 기본값을 설정할 수 있습니다.

● RESTART 명령을 통해 MySQL 인스턴스를 다시 시작할 수 있습니다.

위에 언급된 릴리스는 일반적으로 GA 버전을 의미한다는 점에 유의해야 합니다.

마지막으로 아래 표를 보시면 최근 메이저 버전의 출시 시간과 이 책이 출판된 시점의 최신 마이너 버전과 출시 시간이 나와 있습니다.

MySQL 5.6, 5.7, 8.0의 새로운 기능을 확인해 보세요!

https://en.wikipedia.org/wiki/MySQL#Release_history

표의 데이터에서

1 메이저 버전은 약 3년마다 출시됩니다.

2. 제품 지원 주기는 일반적으로 8년입니다.

3. MySQL 5.5가 구식인 줄 알았는데, 아직 정식 버전이 업데이트 중입니다.

원본 주소: https://www.cnblogs.com/ivictor/p/9807284.html

위 내용은 MySQL 5.6, 5.7, 8.0의 새로운 기능을 확인해 보세요!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 cnblogs에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
MySQL의 라이센스는 다른 데이터베이스 시스템과 어떻게 비교됩니까?MySQL의 라이센스는 다른 데이터베이스 시스템과 어떻게 비교됩니까?Apr 25, 2025 am 12:26 AM

MySQL은 GPL 라이센스를 사용합니다. 1) GPL 라이센스는 MySQL의 무료 사용, 수정 및 분포를 허용하지만 수정 된 분포는 GPL을 준수해야합니다. 2) 상업용 라이센스는 공개 수정을 피할 수 있으며 기밀이 필요한 상업용 응용 프로그램에 적합합니다.

MyISAM을 통해 언제 innodb를 선택 하시겠습니까?MyISAM을 통해 언제 innodb를 선택 하시겠습니까?Apr 25, 2025 am 12:22 AM

MyISAM 대신 InnoDB를 선택할 때의 상황에는 다음이 포함됩니다. 1) 거래 지원, 2) 높은 동시성 환경, 3) 높은 데이터 일관성; 반대로, MyISAM을 선택할 때의 상황에는 다음이 포함됩니다. 1) 주로 읽기 작업, 2) 거래 지원이 필요하지 않습니다. InnoDB는 전자 상거래 플랫폼과 같은 높은 데이터 일관성 및 트랜잭션 처리가 필요한 응용 프로그램에 적합하지만 MyISAM은 블로그 시스템과 같은 읽기 집약적 및 트랜잭션이없는 애플리케이션에 적합합니다.

MySQL에서 외국 키의 목적을 설명하십시오.MySQL에서 외국 키의 목적을 설명하십시오.Apr 25, 2025 am 12:17 AM

MySQL에서 외국 키의 기능은 테이블 간의 관계를 설정하고 데이터의 일관성과 무결성을 보장하는 것입니다. 외국 키는 참조 무결성 검사 및 계단식 작업을 통해 데이터의 효과를 유지합니다. 성능 최적화에주의를 기울이고 사용할 때 일반적인 오류를 피하십시오.

MySQL의 다른 유형의 인덱스는 무엇입니까?MySQL의 다른 유형의 인덱스는 무엇입니까?Apr 25, 2025 am 12:12 AM

MySQL에는 B-Tree Index, Hash Index, Full-Text Index 및 공간 인덱스의 네 가지 주요 인덱스 유형이 있습니다. 1.B- 트리 색인은 범위 쿼리, 정렬 및 그룹화에 적합하며 직원 테이블의 이름 열에서 생성에 적합합니다. 2. HASH 인덱스는 동등한 쿼리에 적합하며 메모리 저장 엔진의 HASH_Table 테이블의 ID 열에서 생성에 적합합니다. 3. 전체 텍스트 색인은 기사 테이블의 내용 열에서 생성에 적합한 텍스트 검색에 사용됩니다. 4. 공간 지수는 지리 공간 쿼리에 사용되며 위치 테이블의 Geom 열에서 생성에 적합합니다.

MySQL에서 인덱스를 어떻게 생성합니까?MySQL에서 인덱스를 어떻게 생성합니까?Apr 25, 2025 am 12:06 AM

toreateanindexinmysql, usethecreateindexstatement.1) forasinglecolumn, "createindexidx_lastnameonemployees (lastname);"2) foracompositeIndex를 사용하고 "createDexIdx_nameonemployees (forstName, FirstName);"3)을 사용하십시오

MySQL은 sqlite와 어떻게 다릅니 까?MySQL은 sqlite와 어떻게 다릅니 까?Apr 24, 2025 am 12:12 AM

MySQL과 Sqlite의 주요 차이점은 설계 개념 및 사용 시나리오입니다. 1. MySQL은 대규모 응용 프로그램 및 엔터프라이즈 수준의 솔루션에 적합하며 고성능 및 동시성을 지원합니다. 2. SQLITE는 모바일 애플리케이션 및 데스크탑 소프트웨어에 적합하며 가볍고 내부질이 쉽습니다.

MySQL의 색인이란 무엇이며 성능을 어떻게 향상 시키는가?MySQL의 색인이란 무엇이며 성능을 어떻게 향상 시키는가?Apr 24, 2025 am 12:09 AM

MySQL의 인덱스는 데이터 검색 속도를 높이는 데 사용되는 데이터베이스 테이블에서 하나 이상의 열의 주문 구조입니다. 1) 인덱스는 스캔 한 데이터의 양을 줄임으로써 쿼리 속도를 향상시킵니다. 2) B-Tree Index는 균형 잡힌 트리 구조를 사용하여 범위 쿼리 및 정렬에 적합합니다. 3) CreateIndex 문을 사용하여 CreateIndexIdx_customer_idonorders (customer_id)와 같은 인덱스를 작성하십시오. 4) Composite Indexes는 CreateIndexIdx_customer_orderOders (Customer_id, Order_Date)와 같은 다중 열 쿼리를 최적화 할 수 있습니다. 5) 설명을 사용하여 쿼리 계획을 분석하고 피하십시오

MySQL에서 트랜잭션을 사용하여 데이터 일관성을 보장하는 방법을 설명하십시오.MySQL에서 트랜잭션을 사용하여 데이터 일관성을 보장하는 방법을 설명하십시오.Apr 24, 2025 am 12:09 AM

MySQL에서 트랜잭션을 사용하면 데이터 일관성이 보장됩니다. 1) STARTTRANSACTION을 통해 트랜잭션을 시작한 다음 SQL 작업을 실행하고 커밋 또는 롤백으로 제출하십시오. 2) SavePoint를 사용하여 부분 롤백을 허용하는 저장 지점을 설정하십시오. 3) 성능 최적화 제안에는 트랜잭션 시간 단축, 대규모 쿼리 방지 및 격리 수준을 합리적으로 사용하는 것이 포함됩니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기