I discovered your channel a few days ago; it's been amazing. Keep up the excellent work.
@dreamsofcode Жыл бұрын
Thank you! I appreciate that a lot
@HrHaakon Жыл бұрын
Prepared statements should not be used because they're faster. They should be used because they're much safer. The speed increase is just a free bonus.
@dreamsofcode Жыл бұрын
This is a great point.
@tipeon Жыл бұрын
As a Java developer, I don't even remember the last time I used an unprepared statement.
@HrHaakon Жыл бұрын
@@tipeon I have been reliably informed that Oracle have imprisoned a Night Elf in their compiler and whenever it sees a java.sql.Statement, he screams "YOU ARE NOT PREPARED", teleports to it and starts wailing. It may be true, but I haven't used a PreparedStatement since Blizzard released Heroes of the Storm, so...
@taiz.i Жыл бұрын
While that is correct, I am pretty sure prepared statements were initially developed for performance.
@cptmorgan924 ай бұрын
Our source has a lots of unprepared statements ❤ I gave up any security concerns in my company 😂 at least we just have a small number of accounts. It’s not perfect if someone is targeting us to exploit data but I haven’t written that bullshit
@SirJagerYT Жыл бұрын
Suggestion for next sql video is "how to vectorize sql database for fast searching"
@dreamsofcode Жыл бұрын
This is a great suggestion!
@wexwexexort Жыл бұрын
@@dreamsofcodeHave you done it
@prathameshjoshi007 Жыл бұрын
slight addition to COPY. you can use \copy from client if you don't have access to store input files on server. i.e. You can locally stream csv to server.
@leonardoplaza7677 Жыл бұрын
Can you explain this in a better way?
@makkusu3866 Жыл бұрын
Really well made video. Staying here for more!
@tobyzieglerrr4 ай бұрын
Great info which was valuable to me, and your channel is top notch anyway. And to add some humor into the mix: Beware, if you have more microservices than users, your system probably does not need indexing or the rest 🙂 stay health, stay fresh, and good luck out there
@2547techno8 ай бұрын
Your index explaination is not entirely correct. Postgres does offer hash-based indexes which are a lot closer to your explaination but the default index type (which you used in your creation example) is a B-Tree index, the data structure is very different. Paritions don't do anything meaningful to speed up writes, they would only speed up reads. Instead of scanning a whole table for a record, you only need to scan the single partition (assuming you're querying a single key) where you know your record lives in. It's the same concept as database sharding, but on one machine instead of multiple.
@dreamsofcode8 ай бұрын
Thanks for your comment! I'm not sure what you're referencing but yes, btree is the default index which uses a binary tree for its lookup table. Partitions can speed up writes usually when asscosited with b tree indexes. One such factor is because of b tree balancing, which on partitioned table is usually less intensive than on the entire data set. Another increase in performance is when performing deletes associated with the partition column, as deleting the partition rather than deleting the rows of a table prevents rebalancing from taking place. This is common in time series data and dramatically improves write performance.
@MATHURIN925 ай бұрын
@@dreamsofcode great point, when dealing with 100 000 000+ rows, I need to try this!
@Fanaro Жыл бұрын
Any book recommendations on how to optimize PostgreSQL?
@quanhua927 ай бұрын
1. the art of postgresql 2. sql antipatterns
@tibzdankan6 ай бұрын
"You can lower the roof and feel the wind in your hair", I love Dreams of Code, I love PostgreSQL
@socks5proxy9 ай бұрын
Thanks!
@dreamsofcode9 ай бұрын
Thank you so much!
@xetera6 ай бұрын
Seems kinda wild that the first point is prepared statements. It's not even a drop in the bucket for performance optimizations compared to indexing
@RoyOlsenАй бұрын
@@xetera Depends on the workload. Apps do silly things, like asking for the current user interface theme some 25 million times per hour. The properties table with 20 rows will not benefit much from an index, but 25 million prepared statements and a query cache will have a nice impact.
@and_rotate69 Жыл бұрын
I want to be from ur first subscribers so when u reach a million in the next year i will comment i was here when he was getting started (i was here at 5k)
@dreamsofcode Жыл бұрын
Haha that would be awesome
@ikigaivrАй бұрын
Love your videos. Just one small request, please share which theme(terminal, text editor) you are using in somewhere in your description. Thank you
@thepaulcraft957 Жыл бұрын
there is no link to your code in the video description. very interesting video!
@dreamsofcode Жыл бұрын
Oh shoot! Thank you for letting me know. I'll fix that now.
@dreamsofcode Жыл бұрын
@ThePaulCraft Fixed! Thank you again.
@gajabalaji3 ай бұрын
Great Video. Thank you!
@halfsourlizard93198 ай бұрын
Who considered Mongo 'fancy'!? I thought everyone had got over the NoSql silliness.
@enos10106 ай бұрын
Thank you for the detailed explanation
@HideBuz9 ай бұрын
Bravo, subbed!
@xucongzhan9151 Жыл бұрын
Nice and informative vid. Care to share what mic you are using? Sounds very nice
@dreamsofcode Жыл бұрын
Thank you! I appreciate the feedback. For this video I used the Electrovoice RE20. I also recorded in a soundtreated room this time as well which made a difference!
@xucongzhan9151 Жыл бұрын
@@dreamsofcode Ah, that explains! I am looking to upgrade my gear but RE20 is really out of my budget 😂 Thanks for the reply
@dreamsofcode Жыл бұрын
@@xucongzhan9151 It's pricey! I think the Shure SM57 is pretty decent as well and much cheaper, I use that one whenever I travel!
@jeetchheda36753 ай бұрын
suppose if i did use the copy command for inserting all rows from a csv, will this not affect my Indexing ?
@CloudWithUgur4 ай бұрын
I have found the channel ! awesome thank you
@apinanyogaratnam Жыл бұрын
🔥any good resources to learn more?
@dreamsofcode Жыл бұрын
There's very little out there really on optimizing PostgreSQL. If it's something of interest I can dedicate some more videos into optimization!
@apinanyogaratnam Жыл бұрын
@@dreamsofcode yes pls!!!
@abdu4729 Жыл бұрын
@@dreamsofcode YES that would be really helpful
@DerClaudius Жыл бұрын
Why would you use preared statements instead of stored procedures? They are automatically "prepared" and don't need to be recreated in every session
@Lightbeerer Жыл бұрын
Stored procedures are wonderful, but prepared statements have the advantage of being more dynamic in nature. Imagine e.g. a web page displaying a list with multiple columns each with different filters and sorting options. It would be a nightmare to implement with a stored procedure, but using a prepared statement you can dynamically build the necessary query.
@DerClaudius Жыл бұрын
@@Lightbeerer Kinda disagree here. Especially with web pages, the connections/sessions are very short and only exists for the short time the page is rendered. And if you only execute the query once per request or paging request, preparing the statements make it slower. And you can absolutely implement dynamic filtering/sorting etc with an SP... and with a lot less SQL injection dangers...
@DerClaudius Жыл бұрын
@@Lightbeerer of course it's all trade-offs but especially for web pages, preparing doesn't make sense if you don't call the query multiple times.
@tipeon Жыл бұрын
With connection pooling, prepared statements make sense because the connections are actually long lived.
@DerClaudius Жыл бұрын
@@tipeon That's not what Connection pooling is for and I would consider this bad design. Connection pooling is for mitigating the connection overhead, but you're not supposed to assume that the connection is pooled or in any state.. you should assume it's a new or in some sense resetted connection. So you would have to first ask the server if there's already a prepared statement in the session and if not, recreate it. That would make things slow again. But it's probably not even possible, because you couldn't reconnect to your prepared statement after you reconnect. Which API allows you to reconnect to an already prepared statement on the server once you let go of the statement object you held? I'm not aware of any. So for this to work you'd need to implement your own connection pooling and keep track of the statement.. and that's an even worse idea.
@pss_crs Жыл бұрын
I would like to see content possible and good way to implement multi tenant on postgres
@n0kodoko143 Жыл бұрын
Awesome video
@dreamsofcode Жыл бұрын
Thank you 🙏
@FelipeCampelo07 ай бұрын
I have restricted my studies to data manipulation tasks. There is a lot to take a look on data definition and control yet!
@dungeon4971 Жыл бұрын
I am wondering how did you insert 20 million row into a table, where did you get that data from
@dreamsofcode Жыл бұрын
I just randomly generated it using a mock data library in Go.
@gjermundification Жыл бұрын
Which language would I write a postgreSQL extension in? PL/SQL? ECMA? Python?
@dreamsofcode Жыл бұрын
SQL and C code are typically used for creating an extension. Mainlg SQL code and C if you need something more powerful!
@budmonk2819 Жыл бұрын
I'm from the Oracle world, a lot of familiar concepts
@ujjwalaggarwal70658 ай бұрын
you should add a timestamp for the copy statement part of the video
@heroe1486 Жыл бұрын
Thanks for the video, very good content and well edited, I'd just recommend putting more dynamism in your voice to match the pacing
@dreamsofcode Жыл бұрын
Thanks for the tips!
@ongayijohnian87878 ай бұрын
Mahn, please do the dadbod plugins for NvChad
@MrAtomUniverse Жыл бұрын
What tool are you using the terminal looks so good
@mishasawangwan6652 Жыл бұрын
alacrity
@SXsoft99 Жыл бұрын
people are not using indexes in an SQL service? also what people should learn about indexes if you create an index on a column the db will search faster after it if you have 3 where conditions, for example, then you need to create an index for those 3 colum combination for speed
@dreamsofcode Жыл бұрын
Definitely at some of the places I've worked at. Indexes are kind of interesting, they're not very useful for small data sizes, and there's the risk of over optimizing for them.
@mcspud Жыл бұрын
>if you have 3 where conditions, for example, then you need to create an index for those 3 colum combination for speed Query planners are smart - if you have very large data sets you can do multi-column indexes and make sure the set reduction is in the correct order, but in my experience even up to a few billion records just having b-trees on each column individually is enough.
@thegrumpydeveloper Жыл бұрын
Nice! Now I don’t have to use web3 and store my data on crypto and pay per request and have huge latencies and non acid transactions. 😂
@rembautimes880811 ай бұрын
Joined as a sub , excellent content especially on read replicas
@LinhLinhBD8 ай бұрын
A good database should be fast by default. if something requires deep knowledge to make it fast, it's a nerdy database.
@dreamsofcode8 ай бұрын
Which databases would you consider "fast by default"?
@nyssc7 ай бұрын
So everything in programming is nerdy then cuz you need to learn to make things work. wait, that indeed makes some sense...
@LinhLinhBD7 ай бұрын
@@dreamsofcode Mysql is faster, but lack feature. So they both not good. Mongodb is pretty god, unfortunately it's not SQL which is what most people need. That's why companies should make better databases. Something that plug and play and fast.
@roelhemerik57157 ай бұрын
It would be brilliant to have some database that is fast by default, but I’m afraid that is not possible in every use-case. Every choice in a database is a tradeoff. (Indexes for instance makes some reads a lot faster, but every write a lot slower…) I think the main selling point for PostgreSQL is that it is relatively easy to change these tradeoffs after you build your application.
@torvic99 Жыл бұрын
MOOOORE
@garm0nb0z1a Жыл бұрын
Prepared statements STILL don't work with pgbouncer and most other db proxies. No thanks.
@SandraWantsCoke3 ай бұрын
mongodb is web scale
@awksedgreep4 ай бұрын
MongoDB for speed? PostgreSQL is a faster document db than mongo and it’s not even the main focus.
@doce3609 Жыл бұрын
chef
@ol_suhАй бұрын
13 And no man hath ascended up to heaven, but he that came down from heaven, even the Son of man which is in heaven. 14 And as Moses lifted up the serpent in the wilderness, even so must the Son of man be lifted up: 15 That whosoever believeth in him should not perish, but have eternal life. 16 For God so loved the world, that he gave his only begotten Son, that whosoever believeth in him should not perish, but have everlasting life. 17 For God sent not his Son into the world to condemn the world; but that the world through him might be saved. 18 He that believeth on him is not condemned: but he that believeth not is condemned already, because he hath not believed in the name of the only begotten Son of God. 19 And this is the condemnation, that light is come into the world, and men loved darkness rather than light, because their deeds were evil. 20 For every one that doeth evil hateth the light, neither cometh to the light, lest his deeds should be reproved. 21 But he that doeth truth cometh to the light, that his deeds may be made manifest, that they are wrought in God. (Jn.3:13-21)
@unitythemaker8 ай бұрын
Thanks!
@dreamsofcode8 ай бұрын
Thank you so much for the support. It's really appreciated!!!