MySQL性能优化(1)
MySQL单实例与多实例
实例:MySQL数据库由后台线程及一个共享内存区组成,数据库实例才是真正用于操作数据库文件的程序集,是一个动态概念。
多实例就是在一台服务器上同时开启多个不同的数据库服务端口(例如3306、3307),同时运行多个数据库进程就是多实例。
MySQL多实例的优缺点
优点:充分利用服务器资源。
缺点:资源抢占问题。
MySQL多实例的实现场景
中小型公司的选择:公司业务访问量不大,希望不同的业务使用不同的数据库服务而互相不受影响,建于资金不足,可食用多实例,比如可以通过3台服务器部署9-15个实例,交叉做主从复制、数据备份及读写分离,这样也能达到多个服务器只装1个数据库的效果。
并发访问不是很大的业务:当业务访问量不大,服务器资源基本都是空闲的,这时很适合多实例应用,如果对sql语句优化较好,多实例是一个很值得使用技术,即使并发打,合理分配资源以及搭配号服务,问题也不大。
门户网站应用:门户网站通常会使用多实例,因为配置硬件好的服务器,可以节省IDC机柜空间,同时运行多个实例可以减少资源浪费情况,例如一个pc服务器,16核CPU,内存128G内存,可运行3-4个实例绰绰有余。
JSON类型
mysql5.7中新增类型
存储在JSON列中的JSON文档的会被自动验证。无效的文档会产生错误;
最佳存储格式。存储在JSON列中的JSON文档会被转换为允许快速读取文档元素的内部格式。
create table t(id int,js json,PRIMARY KEY (`id`))
JSON_EXTRACT()函数
SELECT JSON_EXTRACT('[10,20,[30,40]]','$[1]')
将抽取10
取具体一个值:
SELECT JSON_EXTRACT(data,'$.name'),JSON_EXTRACT(data,'$.address') FROM json_user
JSON_OBJECT()函数
SELECT JSON_OBJECT("name","enjoy","email","enjoy.com","age",35);
JSON_INSERT()函数
@json和@@json区别
局部和系统
UPDATE json_user SET data = JSON_INSERT(data , '$.address',"xiangxue") WHERE uid = 1
JSON_MERGE()函数
select json_merge(' {"name": "enjoy"} ','{"age", 15} ')