Mysql
文章平均质量分 60
幻羽公子
这个作者很懒,什么都没留下…
展开
-
mysql的分区技术
一、概述当 MySQL的总记录数超过了100万后,会出现性能的大幅度下降吗?答案是肯定的,但是,性能下降>的比率不一而同,要看系统的架构、应用程序、还有>包括索引、服务器硬件等多种因素而定。当有网友问我这个问题的时候,我最常见的回答>就是:分表,可以根据id区间或者时间先后顺序等多种规则来分表。分表很容易,然而由此所带来的应用程序甚至是架构方面的改动工作却不>容小觑,还包括将来的扩展性等。原创 2018-02-04 00:48:58 · 179 阅读 · 0 评论 -
mysql之删除重复数据
//删除id重复的数据,适合id是手工主键delete person as a from person as a,( select *,min(id) from person group by id having count(1) > 1) as bwhere a.id = b.id //查找name重复的,并且除掉id最小的那个delete tb_p...原创 2018-04-09 11:04:34 · 182 阅读 · 0 评论 -
mysql5.7主从复制配置——读写分离实现
为什么使用主从架构?1、实现服务器负载均衡;2、通过复制实现数据的异地备份;3、提高数据库系统的可用性;4、可以分库【垂直拆分】,分表【水平拆分】;主从配置的前提条件1、MySQL版本一致;2、MySQL中的数据一致; 不一致就把它们搞一致!3、操作前停止一切更新操作(写入、更新、删除等);4、服务器时间一致主:192.168.1.60 从:192.168.1.35注意:35、60服务器...原创 2018-04-02 10:51:50 · 3526 阅读 · 0 评论 -
linux(centos6.8 64位)下安装mysql5.7(yum方式)
下载mysql源安装包# wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 安装mysql源包#yum localinstall mysql57-community-release-el7-8.noarch.rpm检查mysql源是否安装成功# yum repolist enabled |...原创 2018-04-02 10:53:33 · 230 阅读 · 0 评论 -
mysql 删除单表内多个字段重复的数据
DELETE from lot_log_payflow WHERE (pay_no,sub_flow_type) in (SELECT pay_no,sub_flow_type from (SELECT pay_no,sub_flow_type FROM lot_log_payflow GROUP BY pay_no,sub_flow_type HAVING COUNT(*)>1) s...原创 2018-04-02 10:55:06 · 681 阅读 · 0 评论 -
mysql查询表死锁和结束死锁的方法
1、查询是否锁表show open tables where in_use>0; 2、查询进程show processlist查询到相对应的进程,然后 kill id 3、查看正在锁的事务select * from information_schema.innodb_locks; 4、查看等待锁的事务select * from information_schema.i...原创 2018-04-02 10:56:02 · 1844 阅读 · 0 评论 -
Mysql 查看连接数,状态 最大并发数
show status like '%max_connections%'; ##mysql最大连接数set global max_connections=1000 ##重新设置show variables like '%max_connections%'; ##查询数据库当前设置的最大连接数show global status like 'Max_used_connections'; ##...原创 2018-04-02 10:57:18 · 1069 阅读 · 0 评论 -
mysql 截取身份证出生日期
select idno as 身份证号, cast(substring(idNo,7,8) as date) as 出生日期, DATE_FORMAT(cast(substring(idNo,7,8) as date), '%m-%d') as 生日 from t_person原创 2018-04-02 10:58:50 · 2662 阅读 · 0 评论 -
Mysql日常开发注意要点
1、MySQL存储引擎介绍MyISAM:低版本MySQL默认的MySQL插件式存储引擎,存储文件易损坏,不支持事务。InnoDB:目前默认的MySQL存储引擎,用于事务处理应用程序,具有众多特性,包括ACID事务支持建表语句建议使用 ENGINE=InnoDB 字段,例如:CREATE TABLE `t_user` ( ....) ENGINE=InnoDB AUTO_INCREMENT...原创 2018-04-02 11:00:25 · 155 阅读 · 0 评论 -
mysql where执行顺序
where执行顺序是从左往右执行的,在数据量小的时候不用考虑,但数据量多的时候要考虑条件的先后顺序,此时应遵守一个原则:排除越多的条件放在第一个。在用MySQL查询数据库的时候,连接了很多个过滤条件,发现非常慢。例如:SELECT … WHERE p.languages_id=1 AND t.type=1 AND p.products_id IN (472,474),这样查询需要20多秒,虽然在各...原创 2018-04-02 11:02:23 · 2773 阅读 · 0 评论 -
MySQL SELECT执行顺序
SELECT语句的完整语法为:(7) SELECT (8) DISTINCT <select_list>(1) FROM <left_table>(3) <join_type> JOIN <right_table>(2) ON <join_condition>(4) WHERE <where_condition...原创 2018-04-02 11:04:22 · 154 阅读 · 0 评论 -
配置mysql允许远程连接的方法
默认情况下,mysql只允许本地登录,如果要开启远程连接,则需要修改/etc/mysql/my.conf文件。一、修改/etc/mysql/my.conf找到bind-address = 127.0.0.1这一行改为bind-address = 0.0.0.0即可二、为需要远程登录的用户赋予权限1、新建用户远程连接mysql数据库grant all on *.* to admin@'%' iden...原创 2018-04-02 11:05:29 · 307 阅读 · 0 评论 -
DATE_FORMAT、when case函数用法
一、在oracle中,当想把字符串为‘2011-09-20 08:30:45’的格式转化为日期格式,我们可以使用oracle提供的to_date函数。sql语句为:SELECT to_date('2011-09-20 08:30:45', 'yyyy-MM-dd hh24:mi:ss') FROM dual; 反之,可以使用to_char()函数把日期转化为字符串。...原创 2018-04-09 11:03:18 · 271 阅读 · 0 评论 -
Mysql常用命令详解
Mysql安装目录数据库目录/var/lib/mysql/配置文件/usr/share/mysql(mysql.server命令及配置文件)相关命令/usr/bin(mysqladmin mysqldump等命令)启动脚本/etc/init.d/mysql(启动脚本文件mysql的目录)系统管理连接MySQL格式: mysql -h 主机地址 -u用户名 -p用户密码例 1:连接到本机上的 MyS...原创 2018-04-09 10:59:19 · 180 阅读 · 0 评论 -
ubuntu下安装mysql及卸载mysql方法
1. 删除mysqla. sudo apt-get autoremove --purge mysql-server-5.0b. sudo apt-get remove mysql-serverc. sudo apt-get autoremove mysql-serverd. sudo apt-get remove mysql-common (非常重要)上面的其实有一些是多余的,建议还是按照顺...原创 2018-04-09 10:57:08 · 166 阅读 · 0 评论 -
int(1)和int(11)的区别
在cmd中进入数据库中creata table t(x int(1) zerofill,y int(11) zerofill);insert into t(x,y) values(1,1);select x,y from t;然后我们再创建一张表我们比较一下可以发现int(1)和int(11)使用zerofill后两者才会有所区别,当没有加z原创 2018-02-04 00:50:32 · 4552 阅读 · 0 评论 -
浅谈MySQL分表
关于分表:顾名思义就是一张数据量很大的表拆分成几个表分别进行存储。我们先来大概了解以下一个数据库执行SQL的过程:接收到SQL --> 放入SQL执行队列 --> 使用分析器分解SQL --> 按照分析结果进行数据的提取或者修改 --> 返回处理结果。在这个过程中一般比较花时间的是在队列里的等待时间和执行时间。归根到底就是执行时间,执行时间减少了等待时间自然就变短了。为了保原创 2018-02-06 10:39:44 · 150 阅读 · 0 评论 -
存储过程到底是什么
在大型数据库系统中,存储过程和触发器具有很重要的作用。无论是存储过程还是触发器,都是sql 语句和流程控制语句的集合。就本质而言,触发器也是一种存储过程。存储过程在运算时生成执行方式,<br>所以,以后对其再运行时其执行速度很快。sql server 2000 不仅提供了用户自定义存储过程的功能,而且也提供了许多可作为工具使用的系统存储过程。 12.1.1 存储过程的概念存储过程(st...原创 2018-03-30 11:07:49 · 449 阅读 · 0 评论 -
关系型数据库的不足
(1)关系数据库所采用的二维表格数据模型不能有效地处理多维数据,不能有效处理互联网应用中半结构化和非结构化的海量数据,如Web页面、电子邮件、音频、视频等。(2)高并发读写的性能低关系数据库达到一定规模时,非常容易发生死锁等并发问题,导致其读写性能下降非常严重。Web2.0网站数据库并发负载非常高,往往要达到每秒上万次读写请求。关系型数据库勉强可以应付上万次SQL查询,但硬盘I/O往往无法承担上万...原创 2018-03-30 11:24:43 · 4773 阅读 · 0 评论 -
Mysql分表和分区的区别、分库分表介绍与区别
分表和分区的区别:一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看:mysql分表的3种方法什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上,具体请参考mysql分区功能详细介绍,以及实例 二,mysql分表和分区有什么区别呢 1,实现方式上 a),mysql的分表是真正的分表,一张表分成很多表后...原创 2018-03-31 23:41:18 · 450 阅读 · 0 评论 -
MySQL各版本的区别
1. MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。2. MySQL Enterprise Edition 企业版本,需付费,可以试用30天。3. MySQL Cluster 集群版,开源免费。可将几个MySQL Server封装成一个Server。4. MySQL Cluster CGE 高级集群版,需付费。5. MySQL Workbench(GUI ...原创 2018-03-31 23:48:07 · 669 阅读 · 0 评论 -
mysql分表的3种方法
一,先说一下为什么要分表当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。根据个人经验,mysql执行一个sql的过程如下:1,接收到sql;2,把sql放到排队队列中 ;3,执行sql;4,返回执行结果。在这个执行过程中最花时间在什么地方呢?第一,是排队等待的时间,第二,sql的执行时间。其实这二...原创 2018-03-31 23:55:12 · 189 阅读 · 0 评论 -
mysql悲观锁总结和实践
使用场景举例:以MySQL InnoDB为例商品t_goods表中有一个字段status,status为1代表商品未被下单,status为2代表商品已经被下单,那么我们对某个商品下单时必须确保该商品status为1。假设商品的id为1。一、如果不采用锁,那么操作方法如下://1.查询出商品信息select status from t_goods where id=1;//2.根据商品信息生成订单i...原创 2018-04-09 10:50:41 · 173 阅读 · 0 评论 -
悲观锁和乐观锁使用场景
乐观锁是在应用层加锁,而悲观锁是在数据库层加锁(for update)乐观锁顾名思义就是在操作时很乐观,这数据只有我在用,我先尽管用,最后发现不行时就回滚。悲观锁在操作时很悲观,生怕数据被其他人更新掉,我就先将其先锁住,让别人用不了,我操作完成后再释放掉。悲观锁需要数据库级别上的的实现,程序中是做不到的,如果在长事务环境中,数据会一直被锁住,导致并发性能大大地降低。一般来说如果并发量很高的话,建议...原创 2018-04-09 10:51:35 · 974 阅读 · 0 评论 -
mysql explain用法
explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。使用方法,在select语句前加上explain就可以了,如:explain select * from statuses_status where id=11;explain列的解释table:显示这一行的数据是关于哪张表的type:这是重要的列,显示连接使用了何种类型。从最...原创 2018-04-09 10:54:00 · 112 阅读 · 0 评论 -
Linux启动/停止/重启Mysql数据库的方法
1、查看mysql版本方法一:status;方法二:select version();2、Mysql启动、停止、重启常用命令a、启动方式1、使用 service 启动:[root@localhost /]# service mysqld start (5.0版本是mysqld)[root@szxdb etc]# service mysql start (5.5.7版本是mysql)2、使用 mys...原创 2018-04-09 10:55:32 · 164 阅读 · 0 评论 -
MySQL百万级数据库优化方案
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t wh...原创 2018-04-09 10:48:17 · 894 阅读 · 0 评论