![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Database
文章平均质量分 51
gary-liu
Like technology, like recording life. Since I went to a foreign company, I have to use English to quickly integrate it. WeChat Offical account: gary_foreign
展开
-
MySQL——Lock锁
InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION);二是采用了行级锁。查看锁命令:show status like 'innodb_row_lock%'; 锁分类读锁:也叫共享锁、S锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S 锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。写锁:又称排他锁、X锁。若事务T对数据对象A加上X锁,事务T可以读A也可以原创 2020-10-05 16:51:55 · 502 阅读 · 2 评论 -
MySQL——主从复制
MySQL——主从复制以前对 MySQL 作数据分布仅仅是读写分离,通过数据库自身的主从复制即可实现写主库、读从库。现在则需要双写主库并在经历一个短暂的延时后达成最终一致性,这个问题乍一想比较复杂,但归根结底还是数据最终一致性的问题。一个数据库数据一致性保证数据库的事务特性来保证的,具体见blog中《事务》。主从架构之间数据一致性MySQL 为了提供主从复制功能引入了一个新的日志文件叫 binlog,它包含了引发数据变更的事件日志集合。从库请求主库发送 binlog 并通过日志事件还原数据写入从库原创 2020-10-05 16:39:10 · 973 阅读 · 2 评论 -
MySQL——MVVC(多版本并发控制)
MVCC: 多版本并发控制(MVCC,Multiversion Currency Control)。一般情况下,事务性储存引擎不是只使用表锁,行加锁的处理数据,而是结合了MVCC机制,以处理更多的并发问题。Mvcc处理高并发能力最强,但系统开销比最大(较表锁、行级锁),这是最求高并发付出的代价。MVCC实现原理innodb MVCC主要是为Repeatable-Read事务隔离级别做的。在此隔离级别下,A、B客户端所示的数据相互隔离,互相更新不可见了解innodb的行结构、Read-View的结构对于原创 2020-10-05 16:31:02 · 1204 阅读 · 0 评论 -
MySQL——explain(执行计划)
通过 explain 命令看执行计划+----+-------------+-------+-------+-------------------+---------+---------+-------+------+-------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+-------------+-------+-------+-原创 2020-10-05 16:26:00 · 156 阅读 · 0 评论 -
MySQL——索引原理
MySQL的索引主要是用了B+树B-树B-树,这里的 B 表示 balance( 平衡的意思),B-树是一种多路自平衡的搜索树 它类似普通的平衡二叉树,不同的一点是B-树允许每个节点有更多的子节点。下图是 B-树的简化图.B-树有如下特点:所有键值分布在整颗树中;任何一个关键字出现且只出现在一个结点中;搜索有可能在非叶子结点结束;在关键字全集内做一次查找,性能逼近二分查找;B+ 树所有关键字存储在叶子节点出现,内部节点(非叶子节点并不存储真正的 data)为所有叶子结点增加了一个链原创 2020-10-05 16:06:09 · 212 阅读 · 0 评论 -
事务
所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。事务的ACID特性数据库事务必须具备ACID特性,ACID是Atomic(原子性)、Consistency(一致性)、Isolation(隔离性)和Durability(持久性)的英文缩写。原子性(Atomic):组成一个事务的多个数据库操作是一个不可分割的原子单元;只有所有操作执行成功,整个事务才提交,其中一个操作失败,都必须回滚到初始状态。一致性(Consistency):事务操作成功后数据库所处的状态和原创 2020-08-09 21:29:42 · 133 阅读 · 0 评论 -
The innodb_system data file 'ibdata1' must be writable
之前MySQL还好好的,今天突然无法启动了ps -ef|grep mysql看到有启动的进程,不过启动失败了,然后 根据--log-error=/usr/local/mysql/data/mysqld.local.err到错误日志中看了提示的错误: The innodb_system data file 'ibdata1' must be writable应该是文件的操作权限不够,可以修改下该原创 2017-03-08 00:00:07 · 30586 阅读 · 2 评论 -
sql重复插入问题
问题在项目中,由于别人并发的调用接口,导致插入了重复数据解决方案1.因为使用多台机器部署,可以使用分布式锁用一台机器处理,对处理的方法加锁或同步关键字,但性能会有很大影响,分布式的优势也没了 2.在MySQL的业务表中,根据业务建立唯一索引,防止数据重复具体操作建立唯一索引: ALTER TABLE table_name ADD UNIQUE index_name (column_list)程序原创 2017-03-10 15:32:15 · 4086 阅读 · 0 评论 -
MySQL常用语句及注意事项
1.SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。 2.可以在不删除表的情况下删除所有的行。(不要加*)这意味着表的结构、属性和索引都是完整的DELETE FROM table_name 3.修改表名称alter table test2 rename to test3;或 rename table test3to test4;4.Between原创 2017-04-30 17:07:48 · 794 阅读 · 0 评论 -
Invalid default value for 'create_date' timestamp field
创建表的语句中有这么一句`create_date` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',之后就报了这个错误。That is because of server SQL Mode - NO_ZERO_DATE. In strict mode, don’t allow ‘0000-00-00’ as a valid date. TIMES原创 2017-03-07 23:51:59 · 4354 阅读 · 0 评论 -
Mac 安装和使用redis
Mac下使用redis安装brew install redis设置开机启动 ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist启动服务redis-server /usr/local/etc/redis.c原创 2016-09-30 14:55:05 · 2413 阅读 · 0 评论 -
mysql客户端命令行的使用
上下键可以重复上面的命令行show databases; 显示数据库(不要忘记分号)create database test; 创建test数据库(默认charset是utf8)create database test charset-gbk; 创建test数据库charset是gbkdrop database test; ...原创 2019-09-08 22:22:41 · 864 阅读 · 0 评论 -
Mac——MySQL使用和root密码修改
原因之前在电脑中装过MySQL,很久没用了结果忘记了密码,又折腾了下修改密码,所以这里记录下怕又忘了。启动MySQL进入mysql目录文件cd /usr/local/mysql/support-files 1. 启动mysql服务sudo /usr/local/mysql/support-files/mysql.server start2. 停止mysql服务sudo /us...原创 2019-10-05 13:41:41 · 252 阅读 · 0 评论 -
Your password has expired. To log in you must change it using a client that supports expired passwor
密码过期,需要重设密码,处理过程如下。mysql> use mysqlERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.mysql> set password = password('123456789');Query OK, 0原创 2017-03-07 23:55:14 · 1234 阅读 · 0 评论 -
悲观锁和乐观锁
为什么需要锁在多用户环境中,在同一时间可能会有多个用户更新相同的记录,就会产生冲突。冲突最终会导致丢失更新或脏读。 丢失更新:一个事务的更新覆盖了其它事务的更新结果。 脏读:当一个事务读取其它完成一半事务的记录时,就会发生脏读取。表现为不同用户读到的同一个记录的值可能不同。悲观锁还是乐观锁可以认为是一种思想。不仅仅是关系型数据库系统中有乐观锁和悲观锁的概念,像memcache、hibernate原创 2017-02-18 17:35:11 · 1040 阅读 · 0 评论 -
mysql客户端命令行的使用
上下键可以重复上面的命令行show databases; 显示数据库(不要忘记分号)create database test; 创建test数据库(默认charset是utf8)create database test charset-gbk; 创建test数据库charset是gbkdrop database tes原创 2014-07-18 20:58:51 · 2658 阅读 · 0 评论 -
Oracle11gR2创建表空间
在数据库中创建表空间:之前已经介绍了创建数据库实例,创建成功后要记住你的Database control URL,如果地址打不开,输入services.msc打开服务管理器启动OracleDBConsolet服务即可。 登录进去后点击“服务器”,点击表空间来创建表空间: 点击右边中间的“创建”按钮: 输入名称:test_tablespace 点击右下脚添加数据文原创 2014-06-17 15:03:35 · 2315 阅读 · 0 评论 -
Oracle 11gR2创建数据库实例
按照该链接http://wenku.baidu.com/view/caa21c1a650e52ea551898e2进行配置,但是会出现下面问题: 单机使用的解决办法:1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计算机名字或者ip,端口号还是1521,然后保存。 2. 重启监听服务方法如下:(1. 开启: 在运行原创 2014-06-17 14:47:55 · 3891 阅读 · 0 评论 -
Oracle SQL Developer连接数据库实例
Oracle SQL Developer连接数据库实例使用:打开Oracle自带的工具SQL Developer如下图: 然后键入E:\app\Administrator\product\11.2.0\dbhome_1\jdk\jre\bin\java.exe(这是我的安装地址,可以根据自己的地址填写)点击OK后SQL Developer 点击左上角的“绿色加号”:原创 2014-06-17 15:16:41 · 3106 阅读 · 0 评论 -
Myeclipse连接Oracle11gR2数据库
为在MyEclipse中设置连接Oracle数据库,在MyEclipse中选择Window→Show View→Other→MyEclipse Database→DB Browser选项。 右击DB Browser视图的空白部分,选择New选项,如下图所示。 点击Test Driver,出现了以下错误 新建一个用户,并授予connect,reso原创 2014-06-17 19:03:22 · 2867 阅读 · 0 评论 -
MySQL常用查询语句
1. SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。2. DELETE FROM table_name 可以在不删除表的情况下删除所有的行。(不要加*)这意味着表的结构、属性和索引都是完整的3. 修改表名称alter table test2 rename to test3;或 rename table test3to test4;原创 2015-06-16 11:51:44 · 1214 阅读 · 0 评论 -
MySQL找出表中重复字段的内容
选出表中重复的内容sql语句原创 2015-10-16 17:58:12 · 770 阅读 · 0 评论 -
MySQL的常见SQL语句范例
表操作:创建表:1、CREATE TABLE table1 AS SELECT * FROM test2、CREATE TABLE `test_table` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增id', `product_id` int(11) NOT NULL DEFAULT '0' COMMENT '产品id'原创 2015-09-23 23:27:23 · 971 阅读 · 0 评论 -
安装解压版MySQL5.6
安装解压版MySQL5.6,进入客户端,修改密码及退出操作,以及安装过程中容易出现的一些问题原创 2015-10-29 00:31:39 · 967 阅读 · 0 评论 -
CentOS下yum安装MySQL
CentOS安装MySQL,检测是否有安装yum list installed | grep mysql 或rpm -qa | grep mysql rpm -ql xxx 可以找到通过yum 安装软件的路径MySQL中常见问题原创 2016-03-20 23:06:18 · 833 阅读 · 0 评论 -
Mac安装MongoDB
Mac下安装方法MongoDB 是一个基于分布式文件存储的数据库,是介于关系型和非关系型数据库之间的产品。 MongoDB中文件存储结构:多个文档可以组成集合,多个集合可以组成数据库,一个MongoDB实例可以承载多个数据库。安装brew install mongodb 安装的目录位置 /usr/local/Cellar/mongodb/3.0.7配置mongodb 默认数据文件是放到根目录 /原创 2016-07-24 16:52:26 · 1034 阅读 · 0 评论 -
Mysql——index(索引)使用
索引作用在索引列上可以有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率。而在多表连接查询时,在执行连接时加快了与其他表中的行匹配的速度。索引可以避免排序,比如对order by 的字段建立索引,因为索引使用的是BTree(数据作为叶子节点在树的最底层已经排好序,这样方便了sql的between查询),本来就是排好序列的,所以可以避免排序达到优化查询的效果。添加索引ALTER TA原创 2016-09-30 16:42:48 · 1390 阅读 · 0 评论 -
sql多关键词模糊查询
如果是查询zlyt中含有b或f可以这样写:select * from 表名 where zlyt like '%b%' or zlyt like '%f%'如果是查询zlyt中含有b和f可以这样写:select * from 表名 where zlyt like '%b%f%' or zlyt like '%f%b%';不同的是先后顺序,根据你的情况自己可能需要调整 更新:updat转载 2013-12-20 21:07:55 · 4764 阅读 · 0 评论