`

mysql小记

 
阅读更多
1.tinyint只能存储1字节(有符号-127~+128,无符号0~255),tinyint<2>中括号中2表示存放的数字不足两位的,在最前面填充0(如:1 -> 01)

2.当表中某一个字段存放数据较大时,应该用主键映射关系单独分离一张表出来(一张表数据太大会影响检索速度),这种垂直分离(读写分离)能起到提高速度作用

3.一张表数据条数不易太多,应进行水平分离.如TX的QQ号会根据城市进行分表.查询时只需根据实际业务查询对应城市的表,而不用检索大表去花费超大时间

4.当一个int型数据太大以致BIGINT也放不下,应该用varcha存放,分段取出数据通过特殊算法应用超大数值

5.MySQL的最大连接数(max_connections=100)默认100,实际环境注意更改(一般1000),差不多能支撑最大2000的并发极限(由于静态页面缓存,大概能支撑10W人在线)...像query_cache_size(查询缓存根据情况调整影响查询速度)

6.innodb调节参数
                       innodb_additional_mem_pool_size = 64M
                     innodb_buffer_pool_size =1G

7.myisam调节参数
                       key_buffer_size一般调节为原来的10倍有明显效果

8.MySQL增量备份会记录(SQL[dml,create], 操作时间, 操作位置)..在my.ini中[mysqld]下方添加log-bin=D:/mylog以开启增量备份(重启MySQL).MySQL会在d盘生成index文件(记录有哪些文件)和默认第一个文件000001文件(存放对数据库的操作)

9.可以通过mysqlbinlog D:/mylog.000001查看增量备份文件(里面记录了操作时间和位置),可以通过操作时间和位置有选择的恢复

10.通过 mysqlbinlog --start-datetime="2017-02-28 22:37:20" d:/mylog.000001 | mysql -uroot -p  进行恢复(会恢复时间点之后的所有操作)
--stop-position="123" (会恢复从最开始到位置123的所有数据)
--start-datetime="" --stop-datetime="" (会对start到stop区间进行恢复)
当数据发生灾难性损坏,一般先进行全备份的恢复,在根据增量备份时间点进行恢复

11.可用reset master; 清空增量备份文件,也可在[mysqld]下配置-EXPIRE_LOGS_DAYS=7 进行每7天清空一次

12.MySQL 5大索引:普通索引,主键索引(主键自带),唯一索引(唯一键自带),全文索引(fulltext,仅myisam支持),复合索引(两列以上作为一个索引)

13.表的设计尽量满足3F(原子性,唯一性,没有冗余),具体还是要根据实际业务情况而定

14.SHOW STATUS;可查看数据库状态列表. show [global] status like '状态列表中命令';可查看具体状态情况(如:show status like 'uptime'查看MySQL启动了多长时间).
默认为当前线程,添加global后为整个应用范围

15.show status like 'slow_queries';可查看低于10秒的慢查询(MySQL默认10秒以下为慢查询).showstatus like 'Long_query_time';可查看慢查询时间(默认10秒),可通过
set [global] long_query_time=1;进行修改...默认情况下MySQL不会记录慢查询,可通过cmd输入mysqld --safe-mode --slow-query-log;开启. 使用mysqld -log-slow-queries=d:/slow.log;指定慢查询保存日志路径(默认存放于datadir的路径)

16.可使用explain分析一条查询语句来优化慢查询

17.全文索引使用select * from table where match(field,field...) against(words);可使用select match(field,field...) against(words) from table;显示命中率.tips:全文索引只会对生僻词建立索引(想想就明白的道理),此外MySQL自带的全文索引不支持中文

18.唯一索引能够重复的存储null

19.索引注意事项:a,更新频繁的字段不宜建立索引.b,差异化小的字段不宜建立索引c,对dml的执行有负影响

20.会导致索引失效的情况:like 条件左边为通配符(like '%条件' 或 like '_条件')
组合索引中,没有使用最左边的条件(add index myIndex(column1,column2)-> select from table where column2='xxx')
条件中有or,那么or两边的条件都必须在各自单独的条件下索引有效才会使用索引(如上面列:where column1='aaa' or column2='bbb' 这条不会使用索引,因为在单独的条件下column2得索引会被忽略)
列类型为字符串,索引的条件需用引号包裹(varcha column -> where column=123 不会使用索引,正确使用索引应为 where column='123' )

21.group by语句会默认对结果进行排序.可跟上order by null来阻止

22.myisam和innodb:批量插入(高,低),事物支持(否,是),全文索引(是,否),锁机制(表,行),btree索引支持(是,是),hash索引(否,是),集群索引(否,是),数据缓存(否,是),数据可压缩(是,否),空间占用(低,高),内存占用(低,高),外键支持(否,是)

23.如果引擎是myisam,必须进行定期碎片整理(myisam即使在删除数据后也会留下大量的碎片).可使用optimize table xxx;命令对xxx表进行碎片清理

24.mysqldump -u root -proot 数据库[table1, table2] > 文件路径; 指令可进行数据库备份. source 路径; 可进行根据备份文件恢复.

25.可把备份命令写入bat文件中,然后添加定时任务进行自动备份.注意:bat中的mysqldump命令必须使用全路径,环境变量无效,若路径中有空格,应用双引号包裹(c:\mt work\mysql\bin\mysqldump -u root... -> "c:\mt work\mysql\bin\mysqldump" -u root...)

26.对于数据过多批量插入,应使用存储过程进行,存储过程不会返回执行结果(静默执行),效率比普通高。在插入之前应先关闭MySQL的自动提交事务,在插入的最后一条语句之后进行人为控制提交事务
分享到:
评论

相关推荐

    android应用登录模块访问mysql数据库小记.pdf

    在Android应用开发中,构建一个登录模块并连接到MySQL数据库是一项常见的需求,特别是在需要处理用户...对于其他开发者而言,这篇小记提供了一个实践性的参考,帮助他们避免遇到类似的问题,顺利地构建自己的登录模块。

    MYSQL学习资料

    MySQL数据库扩展小记 mysql架构方案 MySQL水平分区表实际操作总结 Mysql水平分表 mysql水平分表和垂直分表和数据库分区 sysbench mysql 坚持不懈 sysbench安装和使用 SHOW INNODB STATUS 探秘 体验Innodb with ...

    小记一次mysql主从配置解决方案

    MySQL主从配置是一种常见的数据库高可用性和负载均衡策略,它主要目标是实现读写分离,提升数据库系统的并发处理能力。在大数据量或者复杂的报表查询场景下,某些SQL语句可能会导致长时间锁定表,从而影响到前端应用...

    mysql数据存储目录迁移小记

     因刚开始安装mysql的时候没有考虑后期磁盘分区空间问题,所以mysql的数据保存目录按安装默认的目录/usr/local/mysql/(我下载的是一个lamp一键安装包安装的mysql),现在随着服务的运行发现/usr/local/mysql所在...

    mysql8 arm版本 docker镜像

    bitnami/mysql:8.0,arm64版本 docker镜像文件

    MySQL-Python安装问题小记

    在使用Python进行数据库操作时,MySQL-Python库(也称为`mysqlclient`)是一个常见的选择。然而,在安装和使用过程中可能会遇到一些问题。本篇文章主要针对安装MySQL-Python时遇到的常见错误及其解决方案进行详细...

    mysql-shell-8.0.20-macos10.15-x86-64bit.tar.7z

    MySQL Shell是MySQL数据库管理系统的一个重要组件,主要用于交互式地执行SQL命令、JavaScript脚本和Python脚本,提供了一个全面的接口来管理和操作MySQL服务器。在本案例中,我们讨论的是MySQL Shell的8.0.20版本,...

    mysql-shell-8.0.20-windows-x86-64bit.7z

    MySQL Shell是MySQL数据库管理系统的一个重要组件,主要用于交互式地执行SQL命令、JavaScript脚本和Python脚本,提供了一个全面的工具集,便于数据库管理和开发。MySQL Shell 8.0.20是针对Windows 64位平台的版本,...

    mysql-installer-web-community-8.0.20.0.7z

    MySQL是世界上最受欢迎的开源关系型数据库管理系统之一,其在企业级应用、网站开发以及数据分析等领域广泛应用。`mysql-installer-web-community-8.0.20.0.7z` 文件是一个用于在Windows操作系统上安装MySQL社区版的...

    小记mysql备份同库中一张表的历史记录

    mysql备份同库中一张表的历史记录 insert into …select 需求 如今有个这么一个需求。mysql中有个表。数据增长的非常快。可是呢这个数据有效期也就是1个月,一个月曾经的记录不太重要了,可是又不能删除。为了保证这...

    mysql80-community-release-el8-1.noarch.7z

    MySQL 8.0 社区版是开源的关系型数据库管理系统,专为开发人员和企业提供高效、可靠的数据库解决方案。"mysql80-community-release-el8-1.noarch.7z" 文件是一个针对 Red Hat Enterprise Linux 8 和 Oracle Linux 8 ...

    mysql-test-8.0.20-macos10.15-x86_64.tar.7z

    MySQL Community Server 8.0.20 是一个广泛使用的开源关系型数据库管理系统,适用于各种规模的应用,从小型项目到大型企业级系统。该版本专为macOS 10.15(Catalina)设计,提供了64位的兼容性,确保在苹果操作系统...

    mysql-workbench-community-8.0.20-macos-x86_64.7z

    MySQL Workbench 8.0.20 是一个强大的图形化工具,专为MySQL数据库管理系统设计,用于数据库的设计、管理和开发。这款软件适用于macOS平台,支持64位架构,其安装包采用DMG(Disk Image)格式,确保在苹果操作系统上...

    mysql-workbench-community-8.0.20-winx64.7z

    MySQL Workbench 8.0.20 是一个强大的图形化工具,专为管理MySQL数据库而设计,支持Windows(x86, 64-bit)平台,并通过MSI Installer(Microsoft Installer)进行安装。这款工具集成了数据库设计、建模、管理和维护...

    mysql-8.0.20-winx64-debug-test.7z

    MySQL Community Server 8.0.20 Windows (x86, 64-bit), ZIP Archive Debug Binaries & Test Suite 可供开发学习使用

Global site tag (gtag.js) - Google Analytics