MySQL管理与优化(6)_MySQL
选择合适的数据类型
CHAR与VARCHAR
- 存储字符串,保存和检索方式不同,CHAR固定长度,VARCHAR可变长度。
- 对比图:
- 严格模式下,若实际值超出字段定义长度,将会抛出错误。
- 范例:
-- 建表mysql> CREATE TABLE vc (v VARCHAR(4), c CHAR(4));Query OK, 0 rows affected (0.29 sec)-- 插入数据mysql> INSERT INTO vc VALUES('ab ', 'ab ');Query OK, 1 row affected (0.09 sec)-- 查询mysql> SELECT CONCAT(v, '+'), CONCAT(c, '+') FROM vc;+----------------+----------------+| CONCAT(v, '+') | CONCAT(c, '+') |+----------------+----------------+| ab + | ab+ |+----------------+----------------+1 row in set (0.06 sec)
- CHAR比VARCHAR速度快得多,但浪费存储空间。随着MySQL对VARCHAR的性能提升,很多应用也经常用VARCHAR。
- 不同存储引擎对CHAR,VARCHAR的使用原则有所不同:
TEXT与BLOB
- BLOB可保存二进制数据,TEXT只能保存字符串数据。
- BLOB和TEXT会带来一些性能问题,特别是删除操作。删除会留下一些空洞,对以后插入数据到该空洞会有影响,可定期使用OPTIMIZE TABLE进行优化。如,
mysql> CREATE TABLE blob_test( -> id INT NOT NULL AUTO_INCREMENT, -> content TEXT, -> PRIMARY KEY (id))ENGINE=MyISAM;Query OK, 0 rows affected (0.34 sec)
插入一些数据后,数据文件大小为:
mysql> SELECT count(1) FROM blob_test;+----------+| count(1) |+----------+| 12288 |+----------+
我们删除一些数据后,文件大小并没有变:
mysql> DELETE FROM blob_test WHERE id > 5000;Query OK, 7288 rows affected (0.16 sec)

当我们执行优化OPTIMIZE TABLE blob_test后,文件大小才缩小:
mysql> OPTIMIZE TABLE blob_test;+---------------------+----------+----------+----------+| Table | Op | Msg_type | Msg_text |+---------------------+----------+----------+----------+| mysqltest.blob_test | optimize | status | OK |+---------------------+----------+----------+----------+1 row in set (0.08 sec)
- 可以使用合成的(Synthetic)索引来提高大文本字段(BLOB或TEXT)的查询性能。
- 在不必要的时候避免检索大型的BLOG或TEXT值。
- 可以把BLOG或TEXT列分离到单独的表中。这会加少主表的碎片。
浮点数与定点数
- 对于浮点数,如果插入的值的精度超过定义的精度,则会四舍五入;如果SQLMode为Tranditional,若插入值的精度大于定义的精度,则会报错。
- 定点数与浮点数不一样。定点数以字符串存储,精度更高。
- 使用浮点数和定点数的几个原则:
1. 浮点数存在误差问题;
2. 对货币等对精度敏感的数据,应采用定点数来表示或存储;
3. 若程序中用到浮点数,要注意其误差问题,尽量避免浮点数比较;
4. 注意浮点数中一些特殊值的处理。
日期类型选择
- 对于日期类型的选择在前面的文章也详述过,这里作个简单的总结:
不吝指正。

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









이 기사는 MySQL의 Alter Table 문을 사용하여 열 추가/드롭 테이블/열 변경 및 열 데이터 유형 변경을 포함하여 테이블을 수정하는 것에 대해 설명합니다.

기사는 인증서 생성 및 확인을 포함하여 MySQL에 대한 SSL/TLS 암호화 구성에 대해 설명합니다. 주요 문제는 자체 서명 인증서의 보안 영향을 사용하는 것입니다. [문자 수 : 159]

기사는 MySQL에서 파티셔닝, 샤딩, 인덱싱 및 쿼리 최적화를 포함하여 대규모 데이터 세트를 처리하기위한 전략에 대해 설명합니다.

기사는 MySQL Workbench 및 Phpmyadmin과 같은 인기있는 MySQL GUI 도구에 대해 논의하여 초보자 및 고급 사용자를위한 기능과 적합성을 비교합니다. [159 자].

이 기사에서는 Drop Table 문을 사용하여 MySQL에서 테이블을 떨어 뜨리는 것에 대해 설명하여 예방 조치와 위험을 강조합니다. 백업 없이는 행동이 돌이킬 수 없으며 복구 방법 및 잠재적 생산 환경 위험을 상세하게합니다.

기사는 외국 열쇠를 사용하여 데이터베이스의 관계를 나타내고 모범 사례, 데이터 무결성 및 피할 수있는 일반적인 함정에 중점을 둡니다.

이 기사에서는 PostgreSQL, MySQL 및 MongoDB와 같은 다양한 데이터베이스에서 JSON 열에서 인덱스를 작성하여 쿼리 성능을 향상시킵니다. 특정 JSON 경로를 인덱싱하는 구문 및 이점을 설명하고 지원되는 데이터베이스 시스템을 나열합니다.

기사는 준비된 명령문, 입력 검증 및 강력한 암호 정책을 사용하여 SQL 주입 및 무차별 적 공격에 대한 MySQL 보안에 대해 논의합니다 (159 자)
