库级优化之SHOW GLOBAL STATUS

慢查询 //查询慢线程情况 show global status like '%slow%' +---------------------+-------+ | Variable_name | Value | +---------------------+-------+ | Slow_launch_threads | 1 | | Slow_queries | 100 | +---------------------+-------+ 如果Slow_launch_threads值较大,说明有些东西正在延迟连接的新线程 //查询慢查询日志是否开启 show variables like '%slow%' +---------------------+--------------------------------------+ | Variable_name | Value | +---------------------+--------------------------------------+ |log_slow_admin_statements| ON | |log_slow_slave_statements| OFF | | slow_launch_time | 2 | | slow_query_log | ON | | slow_query_log_file | /home/mysql/mysql/slow_query.

后端开发需要了解的mysql优化方向

#优化思维导图 #参数优化注意事项 参数优化分为 动态参数配置 和 配置文件的配置,建议在启动mysql之前配置好优化参数,这样将会全局有效,如使用动态参数配置可能会不生效或出现问题,并且如果数据库重启那么之前的优化参数都会失效 SHOW VARIABLES LIKE 'sort%' 修改会话级变量 set SESSION sort_buffer_size=720000 退出重新连接后,此参数恢复原值 修改全局变量 set GLOBAL sort_buffer_size = 720000 #优化系列 库级优化之SHOW GLOBAL STATUS

数据库设计三范式和反范式

数据库范式 范式的级别 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。 目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。 范式越高,冗余最低,一般到三范式,再往上,表越多,可能导致查询效率下降。所以有时为了提高运行效率,可以让数据冗余(反三范式,一般某个数据经常被访问时,比如数据表里存放了语文数学英语成绩,但是如果在某个时间经常要得到它的总分,每次都要进行计算会降低性能,可以加上总分这个冗余字段)。 后面的范式是在满足前面范式的基础上,比如满足第二范式的一定满足第一范式。 第一范式(1NF):确保每一列的原子性 如果每一列都是不可再分的最小数据单元,则满足第一范式。 但是具体地址到底要不要拆分 还要看具体情形,比如看看将来会不会按国家或者省市进行分类汇总或者排序,如果需要,最好就拆,如果不需要而仅仅起字符串的作用,可以不拆,操作起来更方便。 第二范式:非键字段必须依赖于键字段 如果一个关系满足1NF,并且除了主键以外的其它列,都依赖与该主键,则满足二范式(2NF),第二范式要求每个表只描述一件事。例如: 第三范式:在1NF基础上,除了主键以外的其它列都不传递依赖于主键列,或者说: 任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)

阅读书单

1 并发编程相关 《Java多线程编程核心技术》 《Java并发编程从入门到精通》 《Java并发编程的艺术》 《Java 并发编程实战》 《深入理解 Java 内存模型》 《实战Java高并发程序设计》 2 MYSQL相关

在线工具

cron定时任务表达式 编码格式转换 JVM参数调优 apache镜像 java源码搜索 JSON在线解析 谷歌市场国外软件下载 PYPI Python-Package 正则代码生成 RGB颜色参考 在线格式转换 sitemap自动生成 markdown转公众号文章 加密解密工具

自定义序列化之Externalizable接口

Externalizable简介 Externalizable是一种优先级要高于 Serializable 的序列化机制接口, 这个接口提供了writeExternal()和readExternal()方法用于指定序列化哪些属性。 Externalizable接口与Serializable接口区别 * 1 Serializable序列化时不会调用默认的构造器,而Externalizable序列化时会调用默认构造器 * 2 transient关键字对Externalizable无效 代码事例 公共抽象实体类AbstractDO public abstract class AbstractDO implements Externalizable { private static final long serialVersionUID = -1679770357930200297L; private Long id; private Date createTime; private Date updateTime; public Long getId() { return id; } public void setId(Long id) { this.